Email 关于加密密码和电子邮件检索的建议

Email 关于加密密码和电子邮件检索的建议,email,encryption,sha1,salt,forgot-password,Email,Encryption,Sha1,Salt,Forgot Password,我刚刚用一个盐制的sha1加密完数据库中的密码。当然,我需要实现一个忘记密码链接(以及电子邮件)。我现在有一些不好的临时版本 我假设由于加密方式的原因,我需要提示用户重置密码 我只是在寻找最安全的方法。任何建议,或资源和教程的链接,以及我应该使用什么样的方法都将不胜感激 谢谢,再见 说清楚点,sha1,腌制或奶酪洋葱味,不是加密,而是散列。这是一个单向函数,具有唯一的输出,用于唯一。在数据库中对密码使用盐哈希的想法有两个: 散列是一个单向函数,因此没有人可以访问数据库,实际上可以确定这些密码是什

我刚刚用一个盐制的sha1加密完数据库中的密码。当然,我需要实现一个忘记密码链接(以及电子邮件)。我现在有一些不好的临时版本

我假设由于加密方式的原因,我需要提示用户重置密码

我只是在寻找最安全的方法。任何建议,或资源和教程的链接,以及我应该使用什么样的方法都将不胜感激


谢谢,再见

说清楚点,
sha1
,腌制或奶酪洋葱味,不是加密,而是散列。这是一个单向函数,具有唯一的输出,用于唯一。在数据库中对密码使用盐哈希的想法有两个:

  • 散列是一个单向函数,因此没有人可以访问数据库,实际上可以确定这些密码是什么。很好的练习
  • salted部分,假设您正在散列用户名+密码+一些垃圾,意味着每个用户名+密码组合都应该是唯一的散列。这使得通过预计算哈希进行字典攻击/快捷方式变得困难,因为大多数人没有包含
    ninefingers:stackoverflow!!:{insertcommonwordhere}
    到处乱放。这并没有阻止他们生成它,只是让它更不方便
  • 现在我们已经澄清了这一点,是的,如果用户忘记了他们的密码,你就不能通过电子邮件发送给他们,因为你不能反转散列。是故意的

    相反,您希望做的是允许用户安全地重置其密码。最简单的形式是,如果用户输入他们的电子邮件地址,您可以通过电子邮件向他们发送一个指向您站点的链接,在其参数中包含一个在短时间窗口内有效的唯一、使用一次的令牌

    其他选择?为他们生成密码并通过电子邮件发送给他们。英国政府门户网站做了一件非常有趣的事情:网页包含一半密码,电子邮件包含另一半密码。然后,您需要两者都重新登录

    现在,百万美元的问题是:它安全吗?不,什么都不安全。没有100%的安全性。曾经这种存储密码的特殊方法增加了安全性,因为:

    • DBA不能轻易滥用对用户表的访问权
    • 恶意请求以某种方式
      从表用户中选择*也无法轻松读取这些密码
    但是,一旦您依靠能够向用户发送电子邮件作为安全通信的方法,您就依赖于:

    • 他们的电子邮件帐户是安全的
    • 他们的电子邮件没有被监控

    然后问题就变成了——你真的需要有多安全?实施email-out-a-reset-link解决方案在大多数情况下都会起作用,因为它们的目标值不够高。

    仅仅生成一个新的随机密码,通过电子邮件发送给用户,并在下次登录时强制他们修改密码,有什么不对?你是说一旦密码被加密,他们停止工作了?这很有帮助。我想给他们发邮件,提示他们重置pw就足够了。干杯