2009-12-29 166 views
3

我正在構建使用HTTP進行通信的非瀏覽器客戶端服務器(XULRunner-CherryPy)應用程序。我現在琢磨的區域是用戶認證。由於我對安全性缺乏實質性知識,我更傾向於使用經過驗證的方法和現成的圖書館來試圖自己創造和/或構建某種東西。現代客戶端/服務器身份驗證技術

最近我一直在閱讀很多文章,我可以說我留下的所有內容都是很多挫折感,其中大部分由thisthis貢獻。

我想我需要的是:

  • 在數據庫密碼的安全存儲(自適應哈希?)的用戶憑證
  • 安全有線傳輸(摘要式身份驗證SSL?)
  • 安全令牌驗證後續請求(不知道這一點)

所以問題是:什麼是現代(無頭痛優先)技術和/或庫實現t他? (不會存儲敏感信息,如信用卡號碼)。

我一直在看OAuth,他們有一個新的版本,他們強烈建議使用。問題是文檔仍在開發中,沒有實現新版本(?)的庫。

回答

1

經過大量的努力,我試圖編寫自己的基於Amazon S3設計的原型(我認爲)非常安全,我發現這個優秀的網站有我所有問題的答案,企業安全API工具包,以及更多:OWASP

1

這可能不是一個完整的答案,但我想提供一些有關彩虹表和網絡的令人放心的消息。由於以下原因,我不會太擔心彩虹表:

(1)彩虹表通過檢查散列密碼破解工作。在網絡上,哈希密碼存儲在您的數據庫,所以甚至考慮使用彩虹表,第一個需要破解你的整個數據庫。 (2)如果您使用salt與大多數密碼存儲系統一樣,那麼彩虹表很快就變得不可行。基本上,鹽會在給定密碼的末尾添加一系列額外的位。爲了使用彩虹表,它需要在每個明文密碼中容納額外的位。例如,您向我們展示的第一個鏈接有一個彩虹表實現,可能會在密碼中破解14個字符。因此,如果你有超過14個字節的鹽,這個系統將毫無用處。

+0

感謝您的建議。看起來像多重迭代哈希與足夠長的鹽將足夠安全(即使鹽值與散列密碼一起存儲)。 – vit 2010-01-04 11:39:18

+0

對於除最嚴格要求之外的所有應用程序,這聽起來都不錯。切記要小心如何通過線路發送密碼,在用戶登錄時過期使用會話標識符,以及所有其他同樣重要的安全考慮因素,這些都會影響Web認證。 – Clueless 2010-01-04 14:03:16

1

Amazon Web Services,OpenID和OAuth提供了請求籤名的示例。亞馬遜網絡服務是一個簡單的例子,因爲在交互過程中沒有更復雜的協議。它們基本上涉及讓客戶端或服務器通過用先前設置的密鑰(或密鑰對)對所有字段進行散列處理來簽名請求,並且另一端通過相同的方式驗證簽名。通過在字段中包含一個隨機數或時間戳來防止散列。

設置密鑰或其他憑證以允許此操作可以通過SSL完成,並且應該注意,OAuth WRAP的動機之一是用SSL替換部分或全部請求籤名,以便於實施。

+0

謝謝,我現在正在查看AWS文檔。 – vit 2010-01-07 23:57:09

相關問題