phpbar.de logo

Mailinglisten-Archive

[php] hidden-field-security?

[php] hidden-field-security?

Tobias Ratschiller tobias_(at)_dnet.it
Sat, 18 Dec 1999 07:58:37 +0100


> 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