2011-09-18 20 views
0

我剛剛在我的網站上開始整合OpenID。我看到的所有示例都將聲明的ID存儲在Cookie中。它如何安全?OpenID:爲什麼在cookies中存儲聲明的ID是安全的?

例如,myopenid.com返回一個聲稱的ID是{用戶名} .myopenid.com

因此,如果黑客知道你的聲明ID,他可以很容易地入侵您的帳戶。

當然,您在將ID放入Cookie並用於身份驗證之前,先將ID加密/ md5,但它就像存儲沒有密碼的用戶名一樣!

更新

現在,我想更多地瞭解它,我才明白,你需要在OpenID提供商被記錄下來,這樣即使黑客獲得用戶名,他還需要供應商的密碼登錄我正確嗎?

更新2 不,更新1不正確:)我的網站無法檢查用戶是否成功登錄。我收到的只是聲明的ID,我只需要相信用戶已通過身份驗證。這真是令人困惑......

+0

Cookie不安全嗎? jar(文件系統)上的蓋子(權限)通常就足夠了。如果你擔心中間人會截取cookie,那麼這個問題與你所問的是正交的,不是嗎? – bzlm

+0

@Isaac,你現在正在使用一個。你覺得有風險嗎? – bzlm

+0

@bzlm:也許我應該......? :) 但嚴重的是,我們總是被告知不要在cookie中存儲任何關鍵數據。網站偏好和挑戰反應很好,但明碼密碼,或者,例如,它的MD5不好。問題是OpenID在cookie中存儲了關鍵數據嗎? – Isaac

回答

3

瞭解用戶聲稱的身份不足以進行身份​​驗證。

事實上,用戶必須登錄他的提供商,才能使用該身份驗證您的網站。至於「相信用戶通過認證」 - 不,你不信任。作爲OpenID身份驗證的最後一部分,您應該驗證身份驗證消息來自提供程序。有各種各樣的安全措施來確保郵件是真實的,不變的,等等。 如果你這樣做,你確定你的用戶已被提供者正確認證。

現在,由於您不希望每次用戶發出請求時都這樣做,因此您將會話信息存儲在cookie中。但是,您不只存儲聲明的標識符(如果您決定存儲它),而是存儲會話標識 - 用戶登錄時生成的僞隨機數。由於它是僞隨機的,所以沒有人能夠猜到它,因此,對所聲稱的標識符本身的瞭解並不意味着什麼。

如果回答您的問題,請閱讀您最喜歡的語言/框架中的會話管理,因爲它會告訴您如何輕鬆實現此類機制以及它如何工作。

總結:將OpenID視爲密碼驗證的替代品。您不需要(也不應該)將登錄名和密碼存儲在Cookie中,而且您不必存儲聲明的標識符。同樣,您不會驗證登錄名和密碼是否每次匹配,但請記住該用戶是在會話中進行身份驗證的。

相關問題