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