首頁  >  文章  >  php教程  >  分享下PHP register_globals 值為on與off的理解_php基礎

分享下PHP register_globals 值為on與off的理解_php基礎

PHP中文网
PHP中文网原創
2016-05-16 09:00:111542瀏覽

分享下php register_globals 值為on與off的理解_php基礎:

register_globals的值可以設定為:on或off,我們舉一段程式碼分別描述它們的不同。

代碼:

<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>



當register_globals=off的時候,下一個程式接收的時候應該用$_get['user_name']和$_get['user_pass']來接受傳遞過來的值。 (註:當

的method屬性為post的時候應該用$_post['user_name']和$_post['user_pass'])

當register_globals=on的時候,下一個程式可以直接使用$user_name和$user_pass來接受值。

顧名思義,register_globals的意思就是註冊為全域變量,所以當on的時候,傳遞過來的值會被直接的註冊為全域變數直接使用,而off的時候,我們需要到特定的數組裡去得到它。所以,碰到上邊那些無法得到值的問題的朋友應該先檢查一下你的register_globals的設定和你獲取值的方法是否匹配。 (查看可以用phpinfo()函數或直接查看php.ini)

下面來看看這裡有什麼錯誤?

看看下面的這段php腳本,它用來在輸入的使用者名稱及口令正確時授權存取一個web頁面:

程式碼如下: p>

<?php
// 检查用户名及口令
if ($username == 'kevin' and $password == 
'secret')
$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; ?>

上面的程式碼中存在的問題是你可以很容易地獲得訪問的權力,而不需要提供正確的用戶名和口令。只在要你的瀏覽器的網址列的最後加上?authorized=1。因為php會自動地為每一個提交的值建立一個變數-- 不論是來自動一個提交的表單、url查詢字串還是一個cookie -- 這會將$authorized設定為1,這樣一個未授權的使用者也可以突破安全限制。

以上就是分享下php register_globals 值為on與off的理解_php基礎的內容,更多相關內容請關注php中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn