在PHP中存储密码最安全的方法是什么?

时间:2012-06-07 00:37:10

标签: php security passwords

在PHP中存储密码最安全的方法是什么?我非常有兴趣在使用我的应用程序时保护我的用户,并且我想使用最好的方式来存储他们的密码。我已经完成了对MD5,SHA1等各种加密方法的阅读。我还读了“盐”和哈希。有人可以告诉我用PHP存储密码最安全的方法吗?

2 个答案:

答案 0 :(得分:2)

使用任何类型的哈希存储密码不会保护您的系统,但如果您的系统受到威胁,它将阻止人们看到明文密码。安全来自良好的监控和良好实践。

Microsoft有这个:

  

许多Web应用程序都在使用   用户身份验证用户的密码机制   HTML表单中的用户名和密码。问题和问题   在这里考虑包括:

     
      
  • 用户名和密码是否以明文形式通过不安全的方式发送   频道?如果是这样,攻击者可以通过网络监控进行窃听   用于捕获凭据的软件。这里的对策是   使用安全套接字层(SSL)保护通信通道。
  •   
  • 如何存储凭据?如果您要存储用户名和   明文密码,无论是在文件中还是在数据库中,都是   招来麻烦。如果您的应用程序目录不正确怎么办   配置,攻击者浏览文件并下载   内容或添加新的特权登录帐户?如果心怀不满,该怎么办?   管理员带你的用户名和密码数据库?
  •   
  • 如何验证凭据?如果是,则无需存储用户密码   唯一的目的是验证用户是否知道密码值。   相反,您可以以散列值的形式存储验证器   在登录期间使用用户提供的值重新计算哈希值   处理。缓解字典攻击的威胁   凭证存储,使用强密码并随机组合   使用密码哈希生成salt值。
  •   
  • 初始登录后如何识别经过身份验证的用户?某种形式的身份验证   票证,例如认证cookie,是必需的。怎么样?   饼干安全吗?如果它是通过不安全的通道发送的,则是攻击者   可以捕获cookie并使用它来访问应用程序。偷了   身份验证cookie是一个被盗的登录。
  •   

答案 1 :(得分:1)

在将密码存储到数据库之前,将其密码化并加密。在任何情况下,您都不能以纯文本格式存储密码。一旦被哈希,就丢弃普通密码。

还使用会话变量来存储和跟踪用户会话。不要使用cookie,因为它们存储在浏览器中并且可以妥协。

制定了良好的密码策略。至少要确保每个密码都有一个最小长度,不是字典单词,不是全数字,而是混合了大写和中间情况的数字混合。等等。谷歌对象密码政策将会出现很多。