How to send password with confirmation email (PHP)
首先,我意识到这是一个非常糟糕的做法——然而,我看到过这样做的网站,我想知道。
是否仍要发送密码和注册详细信息,并将密码存储为哈希?
所以,基本上,注册后,用户会收到一封确认电子邮件,以及用户名和密码,以供参考。当一个网站这样做时,他们是将密码存储为哈希,还是以纯文本的形式存储?
密码在电子邮件中存储为纯文本-但是,它是简单地在服务器中存储为纯文本,还是在发送电子邮件后进行哈希处理?
这似乎是一个奇怪的问题,但由于我看到过许多网站这样做,我想知道-我的初始假设是错误的吗?那么,这是一个糟糕的做法,还是安全的做法?(我看不出有其他原因有这么多网站会这么做)
"@Fred-ii- Could you copy/paste that comment as an answer? I – Zack105"
号
按要求:
但是,它是简单地以明文形式存储在服务器中,还是在发送电子邮件后进行哈希处理?
我们不知道每项服务是如何使用的,以及它们真正的用途。有些密码可以以纯文本形式存储,有些密码可以散列。有些人可能会用一个锁和密钥将纯文本密码存储在不同的位置,有些人可能会这样做并散列;它可以是任何东西。
如果您想启动自己的服务或是用户注册站点,那么将密码存储为散列而不是纯文本。有太多的场景可以满足您的要求。我希望我们给你足够的时间开始。
另一件事是,如果您不知道这一点,那么就准备好语句,如果您希望获得用户输入,那么应该使用这些语句,这将有助于防止可能的SQL注入。
参考文献:
- https://en.wikipedia.org/wiki/prepared_声明
- https://en.wikipedia.org/wiki/sql_注入
- http://php.net/manual/en/book.password.php
来自deceze的评论,从(现在已删除的)答案中提取:
我引用:
"最佳做法是让用户选择自己的密码,并且在任何时候都不要以明文存储或发送密码。密码是一个秘密,必须只存在于用户的头(或安全密码管理器)。用户帐户的安全性取决于密码的保密性。密码在明文中暴露得越多,帐户的安全性就越低。"–死亡
别这样,就这么简单。这样做的网站是出于懒惰。他们不希望支持电话要求密码,也不希望一个技术上不识字的人强迫他们这么做。密码不应以明文形式通过网络发送。人们是愚蠢的,会重复使用密码等。如果你担心人们已经忘记了密码,请给他们发送一个链接,指向你在电子邮件中的密码重置页面。