2009-10-13 69 views
3

我讀過一些關於SO的文章和問題(例如here),他們說您不應該將用戶的密碼存儲在cookie中。如果密碼被醃漬和散列,爲什麼這種不安全?在cookie中存儲(散列)密碼安全嗎?

特別是,爲什麼它比使用會話更安全,通常會提出替代方案?如果用戶想要保持登錄狀態那麼肯定這個新的cookie(帶有會話ID /散列)與使用用戶密碼的cookie一樣安全?如果cookie在某些方面「被盜」,攻擊者可以以相同的方式作爲用戶登錄。

編輯:問題的主要癥結在於關於用戶保持登錄狀態的部分,即通過「記住我嗎?」。複選框。在這種情況下,當然只有一個會話?

回答

3

會話通常在某些級別上鍵入IP地址,有些會阻止會話盜用。

除此之外,會話ID不包含任何個人信息;你的密碼,甚至醃製和散列。可能會重複使用的密碼,可能會被重複使用;會話ID不能。會話結束後,結束,您需要新的會話ID才能夠再次模擬用戶。

4

在其他區別中,如果存儲會話,則您擁有這一會話。如果使用密碼,您將從現在開始擁有該用戶的所有會話。

+0

但是,如果用戶想永久保持登錄狀態,那肯定無關緊要嗎?目前只會舉行一次會議。 – DisgruntledGoat

+0

不一定。這當然是實現它的最簡單的方法,但不是唯一的方法。例如,你可以有一個旋轉的會話密鑰。如果有人偷了一個,他們可能會得到下一個,但是這會將原先的用戶踢出去,然後誰會重新登錄,並且你的攻擊者再次處於寒風中。 –

13

通過將哈希密碼+鹽在cookie中,您可以:

  • 打開了一個無限的暴力破解矢量
  • 允許cookie被複制和被任何人使用(它總是讓機會;而會話這樣做了一段時間)。
  • 使其難以改變散列方案,如果成爲相關

此外,你通常需要存儲其他東西,來識別用戶(如他們的用戶ID,所以你可以看看他們的密碼和匹配它)。這可能會導致其他模糊的問題。

所以你最好只用會話id方法。

+0

我看到你的觀點。但是,會話不存在強力問題嗎?如果你有數百萬活躍用戶(例如Facebook),那麼你可以嘗試隨機哈希,直到你得到一個工作?我想他們被綁定到IP地址? – DisgruntledGoat

1

讓別人爲你處理和思考所有這些問題如何?也就是說,使用OpenID,Windows Live ID,Facebook Connect等。