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