2009-05-04 78 views
4

我目前使用下面的代碼在我的CMS檢查,如果訪問者登錄爲管理員,這樣他就可以編輯當前頁:PHP會話變量的錯誤處理?

if($_SESSION['admin']=="1") 
{ 
     echo "<a href="foobar/?update">edit</a>"; 
} 

但我擔心的是,代碼是不安全的。不能$ _session變量很容易被用戶修改?

什麼是更安全的做法?

回答

4

不,這是一個很好的方法。用戶不能修改$ _SESSION全局,除非他有權訪問您的服務器。請記住遠離客戶端Cookie

爲了使它更安全,一個好方法是存儲IP地址並檢查它在每個請求之間保持不變。

+0

謝謝!檢查IP聽起來不錯;我認爲你應該在session_start()之後直接存儲ip,例如: session_start() $ _SESSION [「visitorIp」] = $ _SERVER ['REMOTE_ADDR']; 對不對? – AquinasTub 2009-05-04 14:27:06

0

一旦編碼安全,會話變量應該足夠安全。

另外,請使用以下代替。停止錯誤== 也許也應該使用真實,因爲它比字符串比較快很多。

if("1" === $_SESSION['admin']) 
1

$_SESSION變量不能由用戶設置。代碼因此非常好,儘管通常會詢問您的用戶後端(通常只是一個表用戶,有時是LDAP)關於當前用戶的權限。

3

代碼是確定的,你只是顯示一個鏈接。只要確保你的UPDATE腳本也受到了保護。