Mailinglisten-Archive |
> könnte mal jemand dazu was sagen, ich versteh das nicht so ganz. > Ist das realistisch? Klar. > wenn man in der php.ini die directories richtig gesetzt hat, kommt der > doch gar nicht an passwd ran, oder was meint der? Er kommt an jede Datei ran, die von der User-ID des Webservers lesbar ist (sofern PHP als Modul läuft). Kristian hätte jetzt sicher einen längeren Artikel geschrieben, aber die Quintessenz ist: Daten, die aus dem Internet kommen, müssen so lange als unsicher (tainted) betrachtet werden, bis sie von der Anwendung validiert worden sind. In dem Beispiel würde "validiert" bedeuten, daß $test sich in einem bestimmten Verzeichnis befinden muss oder daß eine aus mehreren definierten Dateien sein muss. Um solche "Namespace-Clashes" wie im Beispiel aufgezeigt (daß also Daten, die aus POST ewartet werden, stattdessen von einem Cookie oder GET kommen) zu verhindern, kann man die assoziativen Arrays $HTTP_POST_VARS, $HTTP_GET_VARS und $HTTP_COOKIE_VARS benutzen und Variablen direkt von dort extrahieren. (Dafür muss enable_track_vars in der php.ini eingeschaltet sein). Wenn ich mich recht erinnere, kann man in PHP 4 sogar abschalten, daß Variablen direkt in den globalen Namespace (also z.B. $test) übernommen werden, damit wäre man gezwungen, auf $HTTP_POST_VARS["test"] zuzugreifen. Mit freundlichen Grüßen, Tobias Ratschiller -- <?php function m($x){global $y,$z;$x=$x>0?-9:$x;$z=($z=$x+5)>0?$z:-$z; print(!$x&&++$y?"\n":($z?($z>$y%3+$y/3?" ":($x<-5?"/":"\\")):"|"));$y- 9?m(++$x):print(" _|_|_\n \\___/");}printf("%5s", "*");m(0); /* Merry Christmas | Tobias Ratschiller | http://phpWizard.net */ ?>
php::bar PHP Wiki - Listenarchive