2012-02-06 99 views

回答

13

發送給客戶端的是會話標識符而不是會話變量。這些會話標識符通常在客戶端設置爲cookie。當然,如果任何人從用戶的瀏覽器或客戶端獲得會話標識符(例如,通過使用跨站點腳本攻擊),他可以在他自己的客戶端中設置會話標識符並以其他用戶身份模擬。

然而,會話變量通常指的是$_SESSION數組中的值。以http://www.php.net/manual/en/function.session-start.php爲例。這些值永遠不會通過網絡發送到客戶端。

就保護會話標識符而言,我已經在第一段中解釋過它們在瀏覽器中存儲爲cookie。在HTTP會話中,Cookie以明文形式在服務器和客戶端之間傳輸。這很容易被竊聽(例如,你的數據包通過的路由器上的一個人可能會捕獲你的數據包並從中讀取會話標識符)。解決此問題的最佳方法是使用HTTPS。

0

我想這取決於你的意思是「安全利益」。如果您的應用程序位於共享主機上,並且您的會話數據保存在某個不安全的中央位置,並且其他用戶可以讀取該位置,則,從技術上說,加密會話有一定的安全性優勢。但是,這將更好地利用您的時間和精力來簡化write your own session storage mechanism,以便您不要將它們存儲在不安全的位置;特別是考慮到如何簡單地加密完全錯誤並給自己一個錯誤的安全感。

+0

+1 ...我認爲這更好地回答了這個問題。會話變量本身沒有公開(只要你不做任何愚蠢的公開操作就可以了),但是如果你使用的是一個配置不正確的共享主機,並且存在通用的tmp/session存儲位置,那麼服務器上的其他站點可能會得到訪問他們。 – 2012-02-06 14:17:02