我必须在我的系统中保存用户电子邮件密码(php + mysql)。
我现在这样做: alt text http://codecookie.net/showcase/cred_save.png
这样安全吗?什么时候不是更好的方法呢?
答案 0 :(得分:4)
咸味哈希是处理“存储”密码的更好方法之一(你实际上并没有真正存储它)。请注意,密码是不可恢复的,因此您的应用应通过“重置密码”功能来满足此要求。
答案 1 :(得分:2)
我建议将hmac与随机生成的长盐一起使用。盐帮助使用“a”和hmac等密码的用户防止长度扩展攻击。
答案 2 :(得分:1)
听起来不错:)因为你没有存储实际的密码而是盐渍哈希,这种方法应该是安全的。
答案 3 :(得分:1)
仅存储散列盐渍密码。在我看来,这基本上是唯一真正安全的方式。加密密码可以解密,哈希盐渍密码需要暴力破解。
function salt_password($password)
{
$salt_1 = '7a@#!P^@29g';
$salt_2 = 'mw3*@~2%21mD';
//whatever random nonesense you can come up with
return sha1($salt_1.$password.$salt_2);
}
function store_password($user,$password)
{
$password = salt_password($password);
//insert username and password in whatever table;
}
function login($user,$password)
{
//select username and password info from db
if(salt_password($password) == $selected_password_from_db))
{
return true;
}
else
{
return false
}
}