通过电子邮件向用户发送密码的安全性如何,因为电子邮件不受 HTTPS 保护。
保护它的最佳方法是什么?我应该使用加密吗?
通过电子邮件向用户发送密码的安全性如何,因为电子邮件不受 HTTPS 保护。
保护它的最佳方法是什么?我应该使用加密吗?
您永远不应以明文形式发送密码,也不应以明文形式存储它们。您应该使用慢速单向加密散列(例如 bcrypt 或 PBKDF2)对它们进行散列。如果用户忘记了密码,您可以为他们提供“重置密码”功能,该功能会向他们的帐户发送一次性重置链接。
如下方案是合理的:
我强烈建议阅读基于表单的网站身份验证的权威指南,以获取有关如何构建安全登录系统的全套指南。
电子邮件不安全。因此,通过电子邮件发送密码存在安全风险。为了降低风险,您可以(在某些情况下)使通过电子邮件发送的密码是一次性密码,这只会解锁用户选择自己的新密码的可能性。
这就是 I-forgot-my-password-for-this-Web-site 系统的功能:用户单击“该死,我忘记密码”按钮,然后发送一封电子邮件,其中包含一个 URL(使用 HTTPS ) 它嵌入了一个随机会话标识符,并指向一个允许用户选择新密码的页面。URL是“一次性密码”。使用此方案,您至少可以从服务器端知道该 URL 的使用时间。
如果您可以正确地进行加密,即如果您可以发送使用用户公钥加密的 OpenPGP 或 S/MIME 消息,那么用户就有一对私钥/公钥:在这种情况下,您为什么要使用密码?
向用户发送密码是一种不好的做法,因为这意味着您拥有用户密码的明文副本。
我想不出这样做的充分理由。还有其他更安全的方法来完成所需的工作。
有关电子邮件安全的一般答案,我建议您阅读此链接,其中包含一些很好的信息。
如果您必须通过电子邮件发送敏感信息,请使用 PGP 等方案或其他加密技术来保护数据。
如果您首先要发送“清除密码”(注册过程除外),那么您做错了。永远不要存储明文密码!很多像索尼音乐这样的公司最近都被烧毁了……让我告诉你,消费者并不高兴。