那么,这是将密码存储在数据库中的正确方法吗?

时间:2013-11-06 20:33:22

标签: php database hash passwords

以下是将用户密码存储在数据库中的安全方法吗?

注册时:

$salt=hash("sha512", rand());
$password=hash("sha512", $_POST["password"].$salt);

insert_values_into_db;

登录时:

$given_password=$_POST["password"];

$salt=get_salt_from_db;
$correct_password=get_password_from_db;

if(hash("sha512", $given_password.$salt) === $correct_password){
    //Password is correct
}else{
    //Password is incorrect
}

这有什么明显的错误吗?

3 个答案:

答案 0 :(得分:1)

最佳解决方案:如果您使用的是PHP 5.5或更高版本,请使用password_hash功能。如果没有,请通过ircmaxwell查看password_compat库。

答案 1 :(得分:0)

所有这些哈希都针对速度进行了优化,使处理器变得简单。 (MD5,SHA512等)由于这种破解,它们同样容易。我要么重新哈希几次,要么只使用crypt方法:http://php.net/manual/en/function.crypt.php

在PHP文档中阅读有关密码散列的更多信息:http://php.net/manual/en/faq.passwords.php

答案 2 :(得分:-1)

在人们使用的数据库中存储密码的最常用方法是

md5密码如:md5($password)

OR

crypt($password)

您还可以为密码添加双md5或双密码以确保安全