Heim >php教程 >php手册 >Teilen Sie Ihr Verständnis der Grundlagen von PHP register_globals on und off_php mit

Teilen Sie Ihr Verständnis der Grundlagen von PHP register_globals on und off_php mit

PHP中文网
PHP中文网Original
2016-05-16 09:00:111595Durchsuche

Teilen Sie Ihr Verständnis der PHP-Register_globals-Werte on und off_php:

Der Wert von register_globals kann auf „Ein“ oder „Aus“ gesetzt werden sie jeweils unterschiedlich zu beschreiben.

Code:

<form name="frmTest" id="frmTest" action="URL">
<input type="text" 
name="user_name" id="user_name">
<input type="password" 
name="user_pass" id="user_pass">
<input type="submit" 
value="login">
</form>



Wenn register_globals=Off, sollte das nächste Programm $_GET['user_name' ] und $_GET[ verwenden 'user_pass'], um den übergebenen Wert zu akzeptieren. (Hinweis: Wenn das Methodenattribut von ff9c23ada1bcecdd1a0fb5d5a0f18437 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 direkt php.ini ü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:

<?php
// 检查用户名及口令
if ($username == &#39;kevin&#39; and $password == 
&#39;secret&#39;)
$authorized = true;
?>
<?php if (!$authorized): 
?>
<!-- 未授权的用户将在这里给予提示 -->
<p>Please enter your username 
and password:</p>
<form action="<?=$PHP_SELF?>" 
method="POST">
<p>Username: <input type="text" name="username" 
/><br />
Password: <input type="password" name="password" 
/><br />
<input type="submit" 
/></p>
</form>
<?php else: ?>
<!-- 有安全要求的HTML内容 
-->
<?php endif; ?>

Das Problem mit dem obigen Code besteht darin, dass Sie leicht Zugang erhalten, ohne den richtigen Benutzernamen und das richtige Passwort anzugeben. Fügen Sie einfach ?authorized=1 am Ende der Adressleiste Ihres Browsers hinzu. Da PHP für jeden übermittelten Wert automatisch eine Variable erstellt – sei es aus einer Formularübermittlung, einer URL-Abfragezeichenfolge oder einem Cookie – wird dadurch $authorized auf 1 gesetzt, sodass ein nicht autorisierter Benutzer Sicherheitsbeschränkungen überschreiten kann.

Das Obige dient dazu, das Verständnis der PHP-register_globals-Werte on und off_php zu teilen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn