我的数据库为每个用户存储唯一的盐。
我正在php中为一个应用程序创建一个登录脚本,其中每个用户都拥有自己独特的盐,这就是我计划实现登录的方式。
我需要脚本为该用户返回salt,否则我的应用程序如果在没有盐的情况下无法对密码进行散列并将其发送回来,将如何验证提交的密码是否正确?
现在这是我不确定的。盐是否加密是否重要,因为黑客可以看到它是什么,看到密码哈希,也许可以用它做点什么。我应该在发送之前加密盐吗?
也许我不理解/忽略下面回复中的内容。
请提供建议。
答案 0 :(得分:1)
无关紧要如果您的盐被散列或作为普通字符串保留 - 重要的是,使用密码来防止直接使用字典/彩虹表攻击来暴力破解密码。另一个优点是每个用户都有一个不同的散列密码。
Salts是随机生成的字符串,在服务器端创建,不涉及到浏览器的任何传输。
在您的服务器上:
// Password from form
$pw = $_GET['password'];
// Generate salt using unique values
$salt = (rand(8).$registration_date.$username);
// Password to be hashed
$pwthb = ($pw.$salt);
如果黑客获得了对您数据库的访问权限,那么您的游戏在大多数情况下已经过了,因为您需要存储初始随机盐以对其进行哈希处理以进行比较。
一个简单的例子:
注意:可以使用PHP或使用MySQL / DB函数进行散列
当用户返回时:
在进一步阅读方面,可能值得研究以下内容: