Wietse Venema toont testversie taint support in PHP
Wietse Venema, die bezig is met het implementeren van taint ondersteuning in PHP, heeft van het weekend een eerste testversie van zijn werk beschikbaar gesteld:
This is a preliminary implementation of support for tainted variables
in PHP. The goal is to help PHP application programmers find and
eliminate opportunities for HTML script injection, SQL or shell
code injection, or PHP control hijacking, before other people can
exploit them.
Het idee van taint mode in PHP is simpel. Gegevens die "van buiten" komen worden aangemerkt als onveilig. Om deze gegevens te kunnen gebruiken zul je eerst een passende zogenaamde "untaint" functie moeten loslaten op deze gegevens. Zo zul je, voordat je een veld uit een formulier kunt gebruiken in een database query eerst een functie als mysql_real_escape_string() moeten aanroepen om deze gegevens te "untainten" (veilig te maken), en zul je voordat je een veld uit de database kunt weergeven op een pagina eerst de functie htmlspecialchars() or htmlentities() moeten gebruiken.
Aangezien allerlei functies zich bewust moeten worden van het feit dat een variabele veilig of niet veilig kan zijn, zijn nog niet alle functies in PHP in staat om om te gaan met de taint mode die Venema heeft geimplementeerd.
However, the implementation is incomplete, so please don't be
surprised when something is still missing. For example, I have not
yet implemented taint support for object-specific operations, and
taint checks assume that output has a Content-Type: of text/html.
In de README die Venema meelevert beschrijft hij welke functies hij al wel heeft aangepakt.
Venema is nu veelal op zoek naar feedback, zowel op functioneel vlak als performance vlak. Dus als je het gaat testen en je komt iets speciaals tegen, of je hebt een suggestie. Laat het hem vooral weten. Zijn emailadres kun je vinden via de posting op news.php.net.
De taint implementatie loopt iets achter op PHP zelf en is gebaseerd op PHP 5.2.3. Je kunt of een Diff of een volledig gepatchte tarball van de PHP source code downloaden. Windows gebruikers hebben, tenzij ze zelf een Windows versie kunnen bakken, nog even pech.
Volg Scriptorama via RSS!
Reageer ook!
Er is nu enkel ondersteuning voor MySQL(i)
Maar er zijn nog veel meer database-types, dan kan je beter iets maken wat wat alle SQL-engines ondersteund.
Persoonlijk zou ik dit niet in een productie omgeving gebruiken, maar enkel lokaal/intranet voor het testen.
Als je dit een webhosting omgeving gaat toepassen krijg je al snel teveel meldingen.
Door Sebastiaan Stok
op 11.05.07 @ 11:53 am | Permalink
Zoals hij aangeeft zouden idealiter alle extensies worden aangepakt, liever nog zelfs op zo'n manier dat de extensies zelf geen code hoeven te wijzigen.
Bij genoeg interesse zullen ook de andere database extensies ongetwijfeld ook worden aangepakt.
Door Mathieu Kooiman
op 11.05.07 @ 11:55 am | Permalink
[...] taal te verzamelen lijkt het wel voorstellen te regenen ook. Eerder hadden we al voorstellen voor Taint mode (waar het akelig stil over blijft, overigens) en Traits. Gister kwam daar een derde bij namelijk [...]
Door PHP 5.3: Closures & Lambda functies | Scriptorama.nl op 08.03.08 @ 1:09 pm | Permalink
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>