簡體   English   中英

安全密碼重置而不發送電子郵件

[英]Secure password reset without sending an e-mail

如何在不向用戶發送電子郵件的情況下實施安全密碼重置功能? 我存儲了另一個安全的信息,只有用戶應該知道,但讓用戶更新密碼似乎是不安全的,因為他們知道一個9位數字。

請注意,由於我正在處理的服務器上的真實數據庫用戶的限制,用戶數據存儲在一個簡單的SQL表中。

任何輸入將不勝感激。

更新:
在嘗試OpenID並記住此服務器不允許PHP(因此,cURL)發出任何外部請求后,我嘗試再次使用PHP發送郵件。 顯然我之前在這台服務器上使用mail()的所有糟糕經歷已經消失了。

感謝您的所有輸入,我將來可能會再次考慮OpenID。

解決密碼問題。 切換到OpenID。 您不必擔心密碼重置,並且用戶只需要一個新密碼即可。

這是一個雙贏的局面。

通常,在互聯網上將用戶識別為真實需要“選擇加入”模式,其中用戶“選擇”重置密碼,並發送電子郵件確認他們要么重置,要么已經重置,新的重置密碼是什么。

實際上,唯一合理安全的替代品是使用類似方法的替代品。 發送電子郵件,短信,他們必須回復,自動電話,他們必須打數字,等等。

我能想到的唯一不使用此系統的方法是安全問題。 當用戶登錄或無法正確登錄多次時,銀行通常會使用這些進行額外驗證。 它們有時也被用作檢索密碼的“秘密”代碼,但即便如此,它通常通過電子郵件發送給用戶,而不是顯示在頁面上。

如果不發送電子郵件,您將大大限制自己。 將密碼重置代碼或新密碼發送到某人的電子郵件地址的好處之一是,您可以依賴於他們是唯一可以訪問其電子郵件帳戶的人。

也就是說,您可以使用“秘密問題”方案來允許某人重置密碼。 當此人創建他們的帳戶時,您需要捕獲他們的秘密問題和答案。 然后,您將提示用戶提出此問題,並且只有在他們正確回答時才允許重置。

我必須提醒您,這不是保護其密碼免受未經授權訪問的好方法。 如需一篇好文章,請閱讀: http//www.schneier.com/blog/archives/2005/02/the_curse_of_th.html

您無法知道誰正在嘗試重置“Joe”的密碼。 它可能是喬,或者可能是扮成喬的人。

發送電子郵件的另一種方法是使用一次性重置密鑰撥打Joe的一部電話或發送短信。

使用http://www.twilio.com/可以輕松地使用音頻消息撥打Joe的電話但是任何人都可以拿起Joe的辦公室電話。 所以通常在打電話之前你還需要一個額外的挑戰。 例如一個秘密的問題/答案。 通過使用手機秘密問答,你已經讓壞人變得更加艱難,但喬仍然可以做到。

另一個想法是將重置消息發送給Joe信任並且知道Joe的人。 (通過電子郵件或電話/短信發送。)此類型的變體是發送給知道Joe的員工,例如他指定的salesrep,HR rep等。

使用帖子:發送帶有重置代碼的蝸牛郵件信件。 可能需要幾天才能到達那里,但郵件被盜是聯邦說唱。 請參閱http://www.postalmethods.com/如果可能出現非常糟糕的負面結果,這可能是一個很好的解決方案。

對於上述任何一項,Joe會在設置帳戶時輸入信息。

另一種模式是要求喬打電話到服務台,讓人類詢問他。

底線是沒有技術是完美的。 請參閱twitter breakin故事: http//www.technewsworld.com/story/67612.html? wlc = 1247790901&wlc = 1248238327

最后想到:不要忘記反網絡釣魚。 通常通過讓喬選擇一個圖片,該網站將在做重要事情時向他展示。 這個想法是網絡釣魚網站將無法復制用戶界面,從而使喬懷疑他可能沒有到達正確的網站。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM