[英]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.