2009-07-13 75 views
3

我正在開發一個Web應用程序 - 信不信由你 - 用戶不需要提供他們的電子郵件地址註冊。這些要求不能改變。用戶將像任何標準網站一樣使用ID和密碼登錄系統。我面臨的問題與忘記密碼的用戶有關。當他們想要生成一個新的,我如何驗證他們的身份?Web應用程序中安全問題的最佳實踐

最初,我打算讓用戶選擇一個安全問題(從5的列表中)並提供答案。如果他們進入忘記密碼頁面,他們將不得不輸入他們的登錄ID,以及他們的安全問題的答案。這似乎有點不安全,因爲這些類型的問題(母親的孃家姓氏,出生城鎮等)的答案通常並不難以獲得。

因此,這裏是我的一些問題:

  • 是安全問題,解決這個問題最好的辦法?
  • 如果是這樣,那麼最好的問題是什麼?
  • 用戶需要輸入多少個問題才能輸入答案?
  • 是否需要在忘記密碼頁面上輸入驗證碼?
  • 用戶生成自己的問題更好嗎?

任何關於此事的幫助/意見/文獻將不勝感激。

回答

2

安全問題是解決此問題的最佳方法嗎?

既然你不能使用的身份驗證任何其他方式(如電子郵件地址,OpenID的,等等),這是最好的,你可以做真的。但是,您始終可以在註冊過程中添加「密碼提示」。

  • 如果是這樣,那麼最好的問題是什麼?
  • 用戶生成自己的問題更好嗎?

,如果你讓用戶寫他/她自己的問題,而不是股市「第一汽車」或「第一寵物」這是很容易。這是一個很好的故障保護,因爲它(通常)提供了一個非常困難的問題/答案組合來隨機猜測,並可能像密碼一樣祕密。

用戶需要輸入多少個問題才能輸入答案?

允許一個問題/答案組合。

是否需要在忘記密碼頁面上輸入驗證碼?

那麼,必須有一些企圖防範強力攻擊,特別是從機器人。我會使用與SO使用的技術相同的技術:reCAPTCHA

0

我記不起位置,但是如果您在基於知識的身份驗證中進行了Google搜索,那麼您將會發現該問題Q &身份驗證功能非常弱。一個重要的問題是潛在答案和實際答案的熵(可能的隨機性)。如果您要求最喜歡的顏色,那麼大多數用戶將只能選擇一小部分顏色。這可能值得1比特的熵。然後,如果你問了第二個問題,比如你長大的城市,這可能會讓你得到另外一兩個熵(在墨西哥,這個答案對於三個城市每個城市都有30%的機會)。

我看到的一個估計是,要獲得與8個字符的密碼相同的強度,您需要約26個問題。

也就是說,您可能可以做其他事情來聯繫用戶。您可以嘗試向用戶發送短信,而不是發送電子郵件 - 用戶是否註冊電話號碼?您可能需要用戶在他們的計算機上存儲證書,他們可以隨密碼重置請求一起上傳證書(您必須努力確保此證書與計算機綁定)。你可以做一個註冊後的事情,用戶可以提交一個電子郵件地址。

祝你好運!