Erfahren Sie mehr über register_globals

黄舟
Freigeben: 2023-03-03 14:52:02
Original
1583 Leute haben es durchsucht

Umfassendes Verständnis von register_globals

register_globals ist in dedecms zwangsweise eingeschränkt

Da die Einstellung „register_globals“ den PHP-Variablenzugriffsbereich steuert, verursacht sie bei Aktivierung unnötige Sicherheitsprobleme , also wird es hier erzwungen. Wenn der Webmaster-Bereich dies nicht unterstützt, können Sie die folgenden Methoden verwenden, um es für die meisten Webmaster-Referenzen zu ändern:

* Wenn Sie ein eigenständiger Server sind Benutzer können php.ini in der PHP-Konfigurationsdatei ändern und dann Apache neu starten.

* Wenn Sie ein virtueller Host-Benutzer sind, benachrichtigen Sie bitte den Space-Provider Es ist möglich, sie die Konfiguration ändern zu lassen, oder Sie können es mit ini_set('register_globals',0 ) versuchen. Erstellen Sie eine neue .htaccess-Datei im Website-Verzeichnis und fügen Sie php_flag register_globals off hinzu. htaccess-Datei, fügen Sie sie einfach in einer neuen Zeile am Ende hinzu;

*Wenn es nicht funktioniert, besteht der einzige letzte Ausweg darin, direkt zu include/common.inc.php zu gehen und den folgenden Code zu löschen ( nicht empfohlen).

//Es gibt viele unsichere Möglichkeiten beim Aktivieren der Eigenschaft register_globals, daher ist es zwingend erforderlich, register_globalsif(ini_get('register_globals')){exit('php.ini register_globals muss ausgeschaltet sein! '); } Ab der PHP4.2.0-Version ist der Standardwert der Einstellungsoption register_globals in php.ini wird ausgeschaltet. Beginnen Sie also am besten jetzt mit dem Programmieren im Off-Stil!
Der Wert von register_globals kann auf „On“ oder „Off“ gesetzt werden. Geben wir einen Code an, um die jeweiligen Unterschiede zu beschreiben.

Code:



Der Code lautet wie folgt:

>
Programm Beim Empfang sollten Sie $_GET['user_name'] und $_GET['user_pass'] verwenden, um den übergebenen Wert zu akzeptieren. (Hinweis: Wenn das Methodenattribut von post ist, sollten Sie $_POST['user_name'] und $_POST['user_pass'] verwenden)

Wenn register_globals=On, kann das nächste Programm verwenden $user_name und $user_pass direkt, um Werte zu akzeptieren.

Wie der Name schon sagt, bedeutet register_globals die Registrierung als globale Variable. Wenn es also aktiviert ist, wird der übergebene Wert direkt als globale Variable registriert und direkt verwendet. Wenn es deaktiviert ist, müssen wir dies tun Gehen Sie zu einem bestimmten Array. Holen Sie es sich. Daher sollten Freunde, die auf die oben genannten Probleme stoßen und den Wert nicht abrufen können, zunächst prüfen, ob Ihre register_globals-Einstellung mit Ihrer Methode zum Abrufen des Werts übereinstimmt. (Um dies zu überprüfen, können Sie die Funktion phpinfo() verwenden oder php.ini direkt überprüfen.) Mal sehen, was hier falsch ist?

Sehen Sie sich das folgende PHP-Skript an, das verwendet wird, um den Zugriff auf eine Webseite zu autorisieren, wenn der eingegebene Benutzername und das Passwort korrekt sind:



Der Code lautet wie folgt:


// Benutzername und Passwort prüfen
if ($username == 'kevin' and $password == 'secret')
$authorized = true
?>