【问题标题】:bcrypt with salt how?bcrypt 怎么加盐?
【发布时间】:2012-04-10 05:02:18
【问题描述】:

在安全方面我是个新手,我一直在阅读 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);

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

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

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

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

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

谢谢

【问题讨论】:

  • “告诉我这是不对的”——哪一部分?
  • 请不要在任何地方盲目使用mysql_real_escape_string。它应该只用于转义查询字符串(无论如何都应该避免,使用准备好的语句时更安全,并且它们更容易适合初学者)。是的,您应该为每个用户使用随机盐。

标签: php salt crypt bcrypt


【解决方案1】:

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

【讨论】:

  • 谢谢,我之前确实遇到过。看起来不错,但我确实想弄脏自己的手,这样我就知道如何在没有帮助的情况下进行操作。
  • Eddy 无论走到哪里,我都会回到openwall.com/phpass。 (我对脏手的看法是错误的),我应该了解安全性,尽管我不应该使用我自己的实现我应该使用别人久经考验的系统来完成严肃的项目,因为我永远不会在一夜之间成为专家。
  • @Julien Etienne - 不对,你应该弄脏你的手,只要手够脏,你就可以使用图书馆。我经常写例子,我希望在互联网上找到大量的文章, - 我没有找到它们,因为没有人想弄脏手。
【解决方案2】:

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

我写了一个小的article about bcrypt in PHP,因为我认为了解函数的工作原理很重要。一旦我们理解了它,我们就可以使用像phpass这样的完善的库。

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 2011-10-13
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2018-03-23
    • 2019-11-03
    相关资源
    最近更新 更多