使用 PHP 在数据库表中存储密码的最安全和最有效的方法是什么?
到目前为止,我已经使用md5()
和sha256
算法来存储密码,如果最终有人获得对数据库的访问权限,则可以使用彩虹表轻松破解它们。
Bcrypt 通常被认为是最安全的选择。
如果您使用的是 PHP 5.5,您可以使用新的密码哈希 API 使其更易于使用。Hashing Passwords with the PHP 5.5 Password Hashing API有一个不错的教程。
使用 bcrypt 是目前公认的对密码进行哈希处理的最佳实践,但大量开发人员仍在使用 MD5 和 SHA1 等较旧且较弱的算法。一些开发人员在散列时甚至不使用盐。PHP 5.5 中的新哈希 API 旨在吸引人们对 bcrypt 的关注,同时隐藏其复杂性。
使用bcrypt
with hash 是目前使用 PHP 做的最好的事情。
不要使用md5
orsha1
函数,因为它们是较旧且较弱的算法。
从 PHP 5.5 开始,您可以使用新password_hash
的password_verify
、password_needs_rehash
和password_get_info
. 您可以在此处阅读有关新哈希函数的更多信息:
密码哈希 API [.. 使] 以安全的方式轻松创建和管理密码。
还:
这个扩展从 PHP 5.5.0 开始可用,但也有一个 » 用户态 PHP >= 5.3.7 的实现。