正确使用salt进行密码存储

时间:2013-09-13 17:19:05

标签: php salt

我对这整个腌制的东西都很陌生。

假设我在config.php中存储了管理员密码(crypt($pass,$salt))

现在我不认为在config.php文件中我的(crypt'ed)密码正下方有一个随机字符串$salt是个好主意,对吗?

我还没有找到一个可以告诉我应该在哪里储存盐或者如何以智能方式实际使用它的教程。

另外,我应该将管理员登录详细信息存储在数据库中,即使我的管理员是唯一的吗?

PHP版本5.1

<?php
//Admininstration
$ad_uname = "church"; #username
$ad_pass = "sj50sl3ZE8ABM"; #password: crypt("blablah", $salt)
$salt = "sjoirjoewtointontont"; #salt
?>

1 个答案:

答案 0 :(得分:0)

看看PHP的函数password_hash(),它完全解决了应该完成的问题。 salt包含在生成的哈希值的一部分中,并且是plaint-text。盐的目的是防止彩虹表攻击。

你要记住的是添加服务器端密钥,这可以通过添加胡椒或通过双向加密算法(除了盐析)加密哈希值来完成。困难在于,在何处存储此秘密,如果攻击者已经拥有阅读源代码的权限,他也可以访问您的秘密(代码必须能够读取它)。如果您对此主题更感兴趣,请冷静地查看此tutorial