十月 04 2004

新版PHP傳遞資料問題解決

by at 18:15:54分類: PHP

User View:71 user views Bot View:288 bot views

分享到Facebook

這個問題已經有很多人提出過了
就是在安裝新版本4.3.2後,原先通過url (domain.com/test.php?xx=1)在php文件之間傳遞資料的方法行不通了。
解決方法其實很簡單

改php.ini中的register_global

register_global = Off
改為
register_global = On

不過我還是要提醒一句,PHP開發商也是這樣建議的,就是儘量在register_global=off的情況下編寫程式,這樣可以大大減少程式的漏洞,不至於黑客直接利用url進行破壞
打個比方:
假設你有這段源碼

if ($check == 1)  //檢查是否是管理員
{
$level = "8"; //主管級別
}
else
{
$level = "2"; //普通用戶
}

當用戶登陸的時候,你自動轉換頁面而使用的url是www.domain.com/main.php?user=xxx&check=0,黑客可以直接用www.domain.com/main.php?user=xxx&check=1直接獲得主管野i權

以上這個錯誤例子雖然在顯示中不太容易犯,但是當你的程式很長的時候,這樣的錯誤就很容易被疏忽。要知道,著名的vBulletin,phpBB都仍然具有這些漏洞。輕則能讓黑客刪貼,重則獲得管理員野i權。

至於register_global=off後的使用方法,可以參照PHP手冊中的$_POST,$_SESSION,釵h在程式之間要傳遞的資料可以直接通過$_POST或者$_SESSION在程式內部傳遞,完全不受外界影響(url破解)。

資料取自:PHP 資源網-社區論壇

目前沒有回應

給個回應吧

(若看不到驗證碼,請重新整理網頁。)