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