2011-05-13 21 views
1

所以Opera Dragonfly似乎可以緩存cookies以及會話信息。特別是我的問題是PHPSSID。有沒有辦法隱藏任何時間的調試器/開發人員工具顯示PHPSSID?如何防止在調試器中看到會話ID?

我不介意cookie,因爲他們是安全的。由於其中的數據是用雙鹽和其他一些東西散列的,所以僞造它們對我來說不成問題。

但我想保證PHP會話沒有看到。我將如何能夠實現這一目標?

+1

我不相信你可以。您最好的選擇是確保緩存的會話不能用於修改網站上的任何內容。 (例如:允許用戶保持登錄狀態,但需要密碼才能執行任何更改設置的操作。) – drudge 2011-05-13 17:31:08

+0

我打算在用戶數據發生任何更改後重新生成會話,例如密碼更改,電子郵件更改等會殺死舊會話並創建一個新會話。 – 2011-05-13 17:34:47

回答

0

總之,答案是:你不能,那不是會話ID的工作。

會話標識點是一個非常隨機的數字,通常稱爲cryptographic nonce。這個值是非常難以猜測的,然後它被用來在服務器端引用關於該會話的狀態。這可能在數據庫中,或者默認情況下PHP使用文件/tmp/THE_SESSION_ID。存儲在$_SESSION中的數據存儲在此文件中,用戶無法獲取此數據。

在PHP中防止攻擊者竊取用戶的會話ID,您應該在您的php.ini中設置session.cookie_secure=On。這迫使會話通過HTTPS。

如果您使用的是HTTPS,那麼會話ID將被該網絡上的攻擊者遮蔽。通過使用HTTPS會話ID不能被像Wireshark或Firesheep這樣的工具劫持。不使用HTTPS是違反OWASP A9: Insufficient Transport Layer Protection。但是,用戶仍然可以通過查看他的Cookie javascript:document.cookie或使用TamperData來查看他自己的會話ID。

+0

但你不需要首先使用HTTPS的有效證書?而這可悲的是花錢,我不想支付,因爲我沒有通過任何重要的數據 – 2011-05-14 00:14:03

+0

如果你沒有傳遞任何重要的數據,那麼你爲什麼關心這個會話ID太多。就我們常規的HTTP會話ID而言。如前所述,會話密鑰只是將用戶鏈接到會話,就是這樣。正如Rich在其他答案中所說的,session id只是用戶機器上的一個cookie,沒有什麼可以阻止用戶看到它,或者爲它設置自己的值。 – Kibbee 2011-05-14 01:05:33

+0

@Kibbee和PT Desu認證憑證(會話ID)是重要的信息。在任何安全的系統中,你必須清楚攻擊者是誰。用戶看到他們自己的會話ID顯然不是攻擊,但是任何其他獲得此會話ID的人都是非常嚴重的owasp違例,可能會使攻擊者管理員訪問您的應用程序。 – rook 2011-05-14 05:34:22