PHP: Variablen per REQUEST übernehmen
Alte PHP-Versionen hatten in der Standardkonfiguration ein nettes aber gefährliches Feature. Alle von außen kommenden Eingabedaten - egal ob aus Cookies, einem URL-Parameter oder einem Formular-Post wurden automatisch zu PHP-Variablen, die man im aktuellen Skript auslesen konnte. Seit PHP 4.2.0 ist der Wert der zugehörigen Konfigurationsvariable "register_globals" standardmäßig aus. Darum funktioniert dieser Mechanismus in neueren PHP-Umgebungen nur noch, wenn Sie ihn explizit per php.ini aktivieren.
Skripte, die noch das frühere Verhalten erwarten, können Sie ohne großen Aufwand und ohne eine Änderung der php.ini an die neuen Gegebenheiten anpassen.
Angenommen, das Programm verwendet die beiden Parameter start und anzahl. Weil das Skript sowohl von einem Formular wie auch von einem anderen Skript aus aufgerufen wird, kommen diese Parameter mal als GET- und mal als POST-Variablen an. In beiden Übergabevarianten existierten die beiden Werte als automatisch generierte PHP-Variablen $start und $anzahl.
Mit den folgenden Zeilen, die vor dem existierenden PHP-Code eingefügt werden müssen, wird dieses Verhalten wieder hergestellt:
$start=$_REQUEST['start'];
$anzahl=$_REQUEST['anzahl'];
Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
Denn ansonsten sind Ihre Programme leichter angreifbar, weil so ein Hacker gegebenenfalls gezielt Ihr Skript eigene Variablenwerte einschleusen kann.
Warum sollte es unsicherer sein $_REQUEST zu verwenden? Es macht imho
keinen nennenswerten Unterschied, ob ein sogenannter "Hacker" jetzt
seine Zeichenfolge für eine SQL-Injection per POST übermittelt oder in
die URL codiert.
Das Skript sollte für alle Fälle ausgelegt sein!
[Hans Wurst | 10.06.2011]
Antworten
Bedingungen für die Kommentareingabe
Hinweis