Bei den häufigen PHP-Entwicklern ruft die bloße Erwähnung von REGISTER_GLOBALS eine emotionale Reaktion hervor, ähnlich einer Begegnung mit der Pest. Aber warum so große Abneigung gegen diese spezielle Einstellung?
Die Gefahren von REGISTER_GLOBALS
REGISTER_GLOBALS ermöglicht den Zugriff auf alle über GET oder POST übergebenen Variablen als globale Variablen innerhalb eines Skripts . Diese scheinbar harmlose Funktion birgt eine versteckte Bedrohung.
Der Zugriff auf nicht deklarierte Variablen in PHP löst nur eine Warnung und keinen Fehler aus. Folglich kann dies einen Nährboden für heimtückische Schwachstellen schaffen.
Ein anschauliches Beispiel
Bedenken Sie den folgenden Codeausschnitt:
<code class="php"><?php // $debug = true; if ($debug) { echo "query: $query\n"; } ?></code>
If $ Wenn die Abfrage nicht explizit deklariert ist, würde der obige Code den Wert einer GET- oder POST-Variablen mit dem Namen „query“ ohne Fehler ausgeben. Obwohl dies möglicherweise keine unmittelbare Bedrohung darstellt, kommt schlecht gestalteter PHP-Code leider häufig vor.
In solchen Szenarien kann REGISTER_GLOBALS unbeabsichtigte Nebenwirkungen und Sicherheitslücken verursachen, die sonst leicht als Fehler erkennbar wären.
Fazit
Obwohl REGISTER_GLOBALS nicht grundsätzlich bösartig ist, hat es sich als eine wesentliche Ursache für Sicherheits- und Stabilitätsprobleme in PHP-Codebasen erwiesen. Dadurch hat es sich seinen berüchtigten Ruf erworben und die Entwickler haben sich einstimmig darauf geeinigt, es als Paria-Setting zu behandeln.
Das obige ist der detaillierte Inhalt vonWarum gilt REGISTER_GLOBALS in PHP als Sicherheitsalbtraum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!