我已經構建了我的第一個登錄系統。用戶輸入一個用戶名和密碼,並給他們一個帶有用戶名和ID的會話ID。保護會話ID
此用戶名和ID然後用於自定義他們看到的頁面。
每個用戶的用戶名和ID基本上都是公開信息,但會話ID僅由系統在登錄時生成。
問題:
什麼是這裏使用會話ID,其中內容基本公共而是讓你必須先登錄會話ID的安全隱患?
有人可以從其他人的公共ID和用戶名僞造會話ID,因爲這是一個會話ID包含在這裏?這很容易嗎?
他們有什麼常見的事情可以讓它更安全嗎?
我已經構建了我的第一個登錄系統。用戶輸入一個用戶名和密碼,並給他們一個帶有用戶名和ID的會話ID。保護會話ID
此用戶名和ID然後用於自定義他們看到的頁面。
每個用戶的用戶名和ID基本上都是公開信息,但會話ID僅由系統在登錄時生成。
問題:
什麼是這裏使用會話ID,其中內容基本公共而是讓你必須先登錄會話ID的安全隱患?
有人可以從其他人的公共ID和用戶名僞造會話ID,因爲這是一個會話ID包含在這裏?這很容易嗎?
他們有什麼常見的事情可以讓它更安全嗎?
Php自己的會話功能非常好,會話的信息不會與用戶一起存儲,而是存儲在服務器上,會話ID有點像密碼。
如果您想了解與會話的安全,我強烈建議更換this video of a speaker at defcon 18.
基本上會是足夠安全的,但如果你足夠了解服務器和用戶,你可以破解它,但它是一個漫長而艱難的進程通過,大多數系統不會給你足夠的信息來破解會話。
+1,儘管有足夠好的方法來防止這種會話劫持(通過猜測sid),這使得它幾乎完全浪費時間。 – zerkms 2011-03-26 11:48:47
由於會話ID用於在初始用戶認證後使用用戶名和密碼對用戶進行認證,因此會話ID是新的認證密鑰,因此必須加以保護。
而且由於在大多數情況下可能會話ID的範圍已經是已知的(PHP使用128位,160位或其他取決於hash function),但全範圍在合理的時間內無法利用,所以更容易對Session Hijacking或Session Fixation等會話執行更多自適應攻擊。還有着名的protection measurements against these attacks on sessions以及developing guidelines。
Google用於防止會話劫持和會話固定。 – zerkms 2011-03-26 11:44:10