2011-03-26 145 views
2

我已經構建了我的第一個登錄系統。用戶輸入一個用戶名和密碼,並給他們一個帶有用戶名和ID的會話ID。保護會話ID

此用戶名和ID然後用於自定義他們看到的頁面。

每個用戶的用戶名和ID基本上都是公開信息,但會話ID僅由系統在登錄時生成。

問題:

什麼是這裏使用會話ID,其中內容基本公共而是讓你必須先登錄會話ID的安全隱患?

有人可以從其他人的公共ID和用戶名僞造會話ID,因爲這是一個會話ID包含在這裏?這很容易嗎?

他們有什麼常見的事情可以讓它更安全嗎?

+0

Google用於防止會話劫持和會話固定。 – zerkms 2011-03-26 11:44:10

回答

2

Php自己的會話功能非常好,會話的信息不會與用戶一起存儲,而是存儲在服務器上,會話ID有點像密碼。

如果您想了解與會話的安全,我強烈建議更換this video of a speaker at defcon 18.

基本上會是足夠安全的,但如果你足夠了解服務器和用戶,你可以破解它,但它是一個漫長而艱難的進程通過,大多數系統不會給你足夠的信息來破解會話。

+0

+1,儘管有足夠好的方法來防止這種會話劫持(通過猜測sid),這使得它幾乎完全浪費時間。 – zerkms 2011-03-26 11:48:47

0

由於會話ID用於在初始用戶認證後使用用戶名和密碼對用戶進行認證,因此會話ID是新的認證密鑰,因此必須加以保護。

而且由於在大多數情況下可能會話ID的範圍已經是已知的(PHP使用128位,160位或其他取決於hash function),但全範圍在合理的時間內無法利用,所以更容易對Session HijackingSession Fixation等會話執行更多自適應攻擊。還有着名的protection measurements against these attacks on sessions以及developing guidelines