所以我正在处理一个网站问题,我是一名中级程序员,我在一个我听到其他朋友使用的网站上购物。当我注册我的帐户时,他们以纯文本形式将我的密码发回到我的电子邮件中。我一直认为,在 html 表单中,如果您散列密码并将其发送到服务器,则无法以纯文本形式发送密码。我假设我创建帐户的网站正在散列密码,但我无法知道。我不是安全专家或任何东西,但我很确定他们没有散列密码,并且可能将我的数据存储在他们的服务器上。我的结论正确吗?
如果您的密码是在注册过程中发送给您的,则可能是在服务器收到密码时立即发送密码并且仍然具有明文,然后对其进行哈希处理并正确存储。
不过,这仍然不是最佳实践,明文密码不应通过不安全的渠道发送,例如电子邮件。
当然,在这种情况下,他们不可能在另一个请求中再次发送它。如果发生这种情况,这实际上意味着他们不会存储散列。
如果它被正确散列和安全,他们应该无法在明文中看到它。如果他们可以轻松访问它,那么黑客也可以。
还有另一种存储密码的方法,即加密。通过这种方式,应用程序服务器存储一个加密密钥来加密用户的密码并将其存储在数据库中。
当用户尝试登录时,他们会加密登录尝试的新传入密码,以查看它是否匹配。
如果密码丢失,他们可以通过使用应用程序服务器上的密钥解密用户的密码来将用户的密码发回给他们。
如果应用程序服务器遭到入侵,攻击者可以像应用程序服务器一样访问所有密码。
他们绝不应该将他们的密码发回给用户。如果用户不记得,他们必须强制用户生成到一个新的。
有关更多讨论,请参阅哈希密码和加密密码之间的区别