1

在安全方面我是个新手,我一直在阅读php crypt并寻找好的建议,尽管没有人真正详细说明“如何”以最有效的方式进行操作。

我做了一个测试登录,它使用这样的东西:

 //verify login from user input
$username = mysql_real_escape_string($_POST['username']);
$salt = '$2a$10$cdDegHjJLPUvVXYz23679.MOetNHBk9NTStpY9YjJWiL5ECfhHlSm';
$password = crypt(mysql_real_escape_string($_POST['password']), $salt);

(我确信我需要更改很多内容以使其完全安全(例如限制密码字符串长度)请告诉我您认为有什么好的做法)

我在某处读到,制作随机盐并将其与密码一起存储是理想的,(我不完全理解检查与密码无关的数字的概念)

然后我在某处读到,随机加盐是没有意义的,因为它不会增加安全性,而静态盐的作用几乎相同。

我看到本教程使用带有 $_GET 的随机盐。(告诉我这是不对的)

有人可以指出我的正确方向,使我的 bcrypt 尽可能有效。

谢谢

4

2 回答 2

1

为每个密码使用随机盐重要。PHP 的crypt()函数实现会自动将其包含在生成的哈希值中,因此存储它的位置没有问题,但它应该从随机源正确生成。

在 PHP 中写了一篇关于 bcrypt 的小文章,因为我认为了解函数的工作原理很重要。一旦我们理解了它,我们就可以使用一个完善的库,比如phpass

于 2012-04-09T20:50:31.240 回答
1

在此处查看我在此线程上的旧答案。有一篇有趣的文章和 phpass 的链接。

于 2012-04-09T19:12:19.317 回答