Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

Timeouts en PHP streams

In "POST request maken zonder CURL" beschreef ik hoe je vanuit een PHP script een formulier kon posten zonder dat je daarvoor de CURL extensie voor nodig had. Daarbij had ik een ding nog niet besproken en dat is het feit dat zo'n website ook down of slecht bereikbaar kan zijn.

Je hebt het vast wel eens aan de hand gehad: je communiceert met een andere server voor SMS of betalingen en op een dag, om wat voor reden dan ook, blijft jouw site ineens hangen. Uiteindelijk kom je er achter dat de andere server niet te bereiken was, maar je script bleef het toch proberen. In dit artikel leer je hoe je met timeouts kunt werken wanneer je met andere servers communiceert.

(more...)

Microsoft biedt IE7 aan zonder WGA

Hoewel Internet Explorer 7 inmiddels bijna een jaar oud is, is het gebruik er van nog niet zo wijd verspreidt als veel webdevelopers zouden willen. Als een voorbeeld, Scriptorama heeft sinds vorig jaar 18 oktober (de release datum van IE7) iets meer dan 53,000 bezoekers gehad. 43% van die bezoekers gebruikte nog steeds Internet Explorer en 50% daarvan, ofwel 14,095 bezoekers, gebruikten Internet Explorer 6.0. 49% gebruikte Internet Explorer 7.

Microsoft heeft dit ongetwijfeld ook opgemerkt en heeft een van de terughoudende factoren voor Internet Explorer 7 opgeheven: Internet Explorer 7 is nu ook te verkrijgen zonder eerst door Windows Genuine Advantage, het validatie proces voor Windows, heen te moeten.

With today’s “Installation and Availability Update,” Internet Explorer 7 installation will no longer require Windows Genuine Advantage validation and will be available to all Windows XP users. If you are not already running IE7, you can get it now from the Internet Explorer home page on Microsoft.com, get a customized version from a third-party site, or, if you haven’t already received it via Automatic Updates, this version will be delivered to you as we described previously.

Misschien dat dit het gebruik nog wat opkrikt.

Gebruiken veel van jouw gebruikers nog steeds Internet Explorer 6?

Taint mode voor PHP ?

Wietse Venema, werkzaam bij IBM en bekend van onder andere Postfix, heeft de PHP internals mailing list een update gestuurd van zijn project om een 'runtime taint support', zoals bijvoorbeeld Perl dat heeft, te implementeren binnen PHP om zo potentiele cross site scripting , shell commando injectie en SQL injectie problemen te voorkomen.

The general idea is to mark certain external inputs as tainted (ex:
network, file), and to disallow the use of tainted data with certain
operations that change PHP's own state (ex: include, eval), or that
access or modify external state (ex: create/open/remove file; connect
to server; generate HTML; execute shell command; execute database
command).

In zijn update beschrijft Wietse hoe zijn eerste implementatie van taint mode werkt, hoe hij tot deze implementatie kwam en wat voor impact dat heeft op performance.

PHP:
  1. <?php
  2.     $username = $_GET['username'];
  3.     echo "Welcome back, $username\n";
  4. ?>

With default .ini settings, this program does exactly what the
programmer wrote: it echos the contents of the username request
attribute, including all the malicious HTML code that an attacker
may have supplied along with it.

When I change one .ini setting:

CODE:
  1. taint_error_level = E_WARNING

the program produces the same output, but it also produces a warning:

CODE:
  1. Warning: echo(): Argument contains data that is not converted
  2.     with htmlspecialchars() or htmlentities() in /path/to/script
  3.     on line 3

Een eerste patch zou binnen enkele dagen beschikbaar moeten zijn. Maar gezien de vorige reacties van de PHP ontwikkelaars op Wietse's voorstel is het nog maar de vraag of het ooit officieel wordt toegevoegd aan PHP.

Wat denk jij? Zou een 'taint mode' implementatie nuttig zijn voor PHP of vind je het voornamelijk verspilde performance?