使用PHP在数据库中存储用户密码的最安全方法是什么?

时间:2013-09-29 21:38:04

标签: php mysql sql

使用PHP在数据库表中存储密码的最安全,最有效的方法是什么?

到目前为止,我已使用md5()sha256算法存储密码,如果最终有人获得数据库访问权限,则可以使用彩虹表轻松攻击这两种密码。

2 个答案:

答案 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做的最好的事情。 不要使用md5sha1函数,因为它们是较旧且较弱的算法。

自PHP 5.5起,您可以使用新的password_hashpassword_verifypassword_needs_rehashpassword_get_info。您可以阅读有关新散列函数here的更多信息:

  

密码散列API [..使得以安全的方式轻松创建和管理密码

也:

  

这个扩展从PHP 5.5.0开始提供,但是还有一个用于PHP的用户区实现> = 5.3.7。