2009-10-26 67 views
1

我有一個簡單的Web應用程序設置管理員可以創建用戶的位置。用戶不會自己創建。管理員所要做的就是輸入用戶名和電子郵件,並將臨時密碼發送給用戶以供他們登錄。這封電子郵件以純文本格式發送。如果用戶第一次登錄,他們需要更改密碼並輸入安全問題和答案。用戶顯然必須知道他們的臨時密碼才能第一次登錄,這是我知道通過電子郵件知道他們的唯一方法。另一種選擇是讓管理員呼叫用戶,並通過電話或親自告訴他們他們的臨時密碼,但這是不實際的。我怎麼能處理這樣的情況?保護通過電子郵件發送給用戶的臨時密碼?

+0

它是您所關心的電子郵件的安全性嗎? – JasonS 2009-10-26 17:40:43

回答

4

我通常使用基於後端的邀請記錄的臨時URL。基本上你可以創建一個邀請記錄,並根據一些信息(可能是用戶的電子郵件地址,時間戳和隨機值)生成散列。將散列存儲爲邀請記錄的一部分,然後將散列作爲參數發送給它們。

當他們點擊鏈接查找邀請並驗證其存在並且尚未使用時 - 然後允許他們設置密碼並使邀請無效。

它不需要發送任何密碼,如果你想要的話,你可以在你的邀請記錄上設置過期時間。

+0

您的記錄是什麼意思? – Xaisoft 2009-10-26 17:27:04

+0

通過邀請記錄我的意思是記錄邀請散列,用戶的電子郵件地址以及邀請的時間戳和/或到期時間信息的數據庫記錄 – paulthenerd 2009-10-26 18:22:50

2

您描述的場景非常普遍 - 通過電子郵件發送臨時密碼並要求在第一次登錄時更改該密碼。除非你對這個模型有特殊的問題,否則我沒有理由不使用它。有一個管理員調用用戶可能會變得複雜 - 我會不惜一切代價避免這種情況。

+0

是的,如果你告訴他們必須這樣做,那麼管理員調用可能會使管理員關閉。我只是好奇,如果有什麼方法可以增加額外的安全級別,那麼我可以更確定一點,就是我通過電子郵件發送臨時密碼的人實際上正在更改其密碼。 – Xaisoft 2009-10-26 17:10:32

0

您可以使用密碼和用戶散列作爲參數生成自定義URL,用戶必須自行登錄。如果攻擊者沒有信息,哈希將很難檢索

+0

你能詳細解釋一下嗎?你的意思是像一個GUID的網址? – Xaisoft 2009-10-26 17:11:44

+0

是的,並通過郵件將這個URl發送給用戶 – Gregoire 2009-10-26 17:17:05

+0

我有點困惑,這是否仍然需要我通過電子郵件發送臨時密碼? – Xaisoft 2009-10-26 17:19:34

相關問題