Security a'的最佳方式;忘记密码';实施
我正在寻找实现“忘记密码”功能的最佳方法 我有两个想法:Security a'的最佳方式;忘记密码';实施,security,authentication,passwords,forgot-password,Security,Authentication,Passwords,Forgot Password,我正在寻找实现“忘记密码”功能的最佳方法 我有两个想法: 当用户单击忘记密码时,用户需要输入用户名、电子邮件以及可能的出生日期或姓氏。然后,带有临时密码的邮件将发送到用户电子邮件帐户。用户使用临时密码登录并重置其密码 类似,但电子邮件中会包含一个链接,允许用户重置密码 或者有人能给我建议一个更好更安全的方法吗?我还想发送临时密码或链接,强制用户在24小时内重置密码,否则临时密码或链接将不可用。如何做到这一点?如果注册时包含电子邮件地址。“忘记密码”按钮将向该电子邮件地址发送电子邮件。它确保信息发
或者有人能给我建议一个更好更安全的方法吗?我还想发送临时密码或链接,强制用户在24小时内重置密码,否则临时密码或链接将不可用。如何做到这一点?如果注册时包含电子邮件地址。“忘记密码”按钮将向该电子邮件地址发送电子邮件。它确保信息发送到受信任的电子邮件
(除非数据库被黑客入侵,否则一切都不安全)。更新:2013年5月修订,以获得更好的方法
ID
、Time
和UserID
的表password\u change\u requests
。当新用户按下按钮时,将在表中创建一条记录。Time
列包含用户按下“忘记密码”按钮的时间。ID
是一个字符串。创建一个长的随机字符串(比如GUID),然后像密码一样对其进行散列(这本身就是一个单独的主题)。然后将此哈希用作表中的“ID”http://www.mysite.com/forgotpassword.jsp?ID=01234567890ABCDEF
。forgotpassword.jsp页面应该能够检索ID参数。对不起,我不懂Java,所以不能说得更具体了ID
,再次对其进行散列,并对照表进行检查。如果存在这样的记录,并且不超过24小时,则会提示用户输入新密码这完全取决于您的网站和您试图实现的安全级别,但web应用程序的基本流程如下所示:
注意此过程完全依赖于用户电子邮件帐户的安全性。因此,这取决于您希望实现的安全级别。对于大多数网站/应用程序来说,这通常就足够了。如前所述,这取决于所需的安全级别,但是,如果您需要更高级别的安全,我看到的一些新颖解决方案包括:
- 在确认用户身份(安全问题、电子邮件地址等)后显示临时密码的一半,然后将另一半发送到电子邮件帐户。如果电子邮件帐户已被泄露,则不太可能是同一个人也成功实施了中间人攻击。(见英国政府门户网站)
- 通过电子邮件和其他媒介确认身份-例如,通过文本发送到注册手机的代码。(见易趣/贝宝)
因为在这两个极端之间的某个地方,实施安全问题可能是DaveG提到的方法。当您通过电子邮件发送任何信息时,它将不安全。有太多的方法可以让人得到它。对于一个想要窃取你的信息的熟练黑客来说,这简直是儿戏 不要通过电子邮件发送任何个人信息,如密码和收入信息,因为如果这些信息被泄露或被盗,可能会让您和您的组织感到非常尴尬。认真考虑安全问题。只要发生一件事,所有的砖头就会倒塌 关于密码检索,请仔细阅读 归根结底,这是一个应用程序 遵循最佳实践