在PHP中存储密码最安全的方法是什么?我非常有兴趣在使用我的应用程序时保护我的用户,并且我想使用最好的方式来存储他们的密码。我已经完成了对MD5,SHA1等各种加密方法的阅读。我还读了“盐”和哈希。有人可以告诉我用PHP存储密码最安全的方法吗?
答案 0 :(得分:2)
使用任何类型的哈希存储密码不会保护您的系统,但如果您的系统受到威胁,它将阻止人们看到明文密码。安全来自良好的监控和良好实践。
Microsoft有这个:
许多Web应用程序都在使用 用户身份验证用户的密码机制 HTML表单中的用户名和密码。问题和问题 在这里考虑包括:
- 用户名和密码是否以明文形式通过不安全的方式发送 频道?如果是这样,攻击者可以通过网络监控进行窃听 用于捕获凭据的软件。这里的对策是 使用安全套接字层(SSL)保护通信通道。
- 如何存储凭据?如果您要存储用户名和 明文密码,无论是在文件中还是在数据库中,都是 招来麻烦。如果您的应用程序目录不正确怎么办 配置,攻击者浏览文件并下载 内容或添加新的特权登录帐户?如果心怀不满,该怎么办? 管理员带你的用户名和密码数据库?
- 如何验证凭据?如果是,则无需存储用户密码 唯一的目的是验证用户是否知道密码值。 相反,您可以以散列值的形式存储验证器 在登录期间使用用户提供的值重新计算哈希值 处理。缓解字典攻击的威胁 凭证存储,使用强密码并随机组合 使用密码哈希生成salt值。
- 初始登录后如何识别经过身份验证的用户?某种形式的身份验证 票证,例如认证cookie,是必需的。怎么样? 饼干安全吗?如果它是通过不安全的通道发送的,则是攻击者 可以捕获cookie并使用它来访问应用程序。偷了 身份验证cookie是一个被盗的登录。
答案 1 :(得分:1)
在将密码存储到数据库之前,将其密码化并加密。在任何情况下,您都不能以纯文本格式存储密码。一旦被哈希,就丢弃普通密码。
还使用会话变量来存储和跟踪用户会话。不要使用cookie,因为它们存储在浏览器中并且可以妥协。
制定了良好的密码策略。至少要确保每个密码都有一个最小长度,不是字典单词,不是全数字,而是混合了大写和中间情况的数字混合。等等。谷歌对象密码政策将会出现很多。