Dieses Feature ist seit PHP 5.3.0 DEPRECATED (veraltet). Sich auf dieses Feature zu verlassen ist in keiner Weise empfehlenswert.
Ein Feature von PHP zur Erhöhung der Sicherheit ist die Konfiguration von PHP mit register_globals = off. Mit Deaktivierung der Möglichkeit, irgendeine vom Benutzer übertragenen Variable in den PHP Code zu injizieren, können Sie die Anzahl "vergifteter" Variablen reduzieren, welche ein potentieller Angreifer zufügen könnte. Dieser benötigt mehr Zeit, um sich Übermittlungen auszudenken, und Ihre internen Variablen sind effektiv von den übergebenen Benutzervariablen isoliert.
Während dies den benötigten Aufwand mit PHP zu arbeiten leicht erhöht ist dargelegt, dass die Vorteile gegenüber dem Aufwand klar überwiegen.
Beispiel #1 Mit register_globals=on arbeiten
<?php
if ($username) { // kann vom User mit get/post/cookies übermittelt werden
$good_login = 1;
}
if ($good_login == 1) { // kann vom User mit get/post/cookies übermittelt werden
fpassthru ("/highly/sensitive/data/index.html");
}
?>
Beispiel #2 Mit register_globals = off arbeiten
<?php
if($_COOKIE['username']){
// kann nur von einem Cookie kommen
$good_login = 1;
fpassthru ("/highly/sensitive/data/index.html");
}
?>
Beispiel #3 Entdecken einfacher Manipulationen von Variablen
<?php
if ($_COOKIE['username'] &&
!$_POST['username'] &&
!$_GET['username'] ) {
// Durchführen anderer Checks, ob der Benutzername gültig ist...
$good_login = 1;
fpassthru ("/highly/sensitive/data/index.html");
} else {
mail("[email protected]", "Possible breakin attempt", $_SERVER['REMOTE_ADDR']);
echo "Security violation, admin has been alerted.";
exit;
}
?>
E_NOTICE
angezeigt werden.
Sie können die On und Off Einstellungen von register_globals emulieren, näheres hierzu finden Sie in den FAQ.
Hinweis: Superglobals: Hinweis zur Verfügbarkeit
Seit PHP 4.1.0 stehen superglobale Arrays wie $_GET, $_POST,$_SERVER, etc. zur Verfügung. Weitere Informationen können Sie dem Abschnitt zu superglobals entnehmen.