以下是将用户密码存储在数据库中的安全方法吗?
注册时:
$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
}
这有什么明显的错误吗?
答案 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或双密码以确保安全