【问题标题】:Using encryption and salt with Zend Framework 2's Authentication在 Zend Framework 2 的身份验证中使用加密和盐
【发布时间】:2013-04-07 15:03:33
【问题描述】:

我是一个初学者,但我一直在尝试学习使用 Zend Framework 2。我正在使用从公共存储库克隆的模块来验证用户。它使用 MD5,如下所示:

$dbAdapter      = $sm->get('Zend\Db\Adapter\Adapter');
$dbAuthAdapter  = new DbAuthAdapter($dbAdapter, 'user','username','password', 'MD5(?)');

但是,首先我想使用 MD5 以外的东西(比如 SHA-2?),因为我多次读到 MD5 不再安全,我也想使用盐值。我想为每个用户生成一个随机盐值并将其存储在他们的表行中的单独列中,并将他们的密码存储为哈希盐 + 密码。那部分应该不是问题。

我遇到的问题是如何使用我在模块中设置的适配器来验证它。我想从数据库中获取盐值,将其添加到用户通过登录表单提供的密码中,对其进行加密,并将其与存储的密码进行比较。如何从数据库中获取用户的盐值?如何使用不同的加密而不是 MD5?

【问题讨论】:

    标签: php encryption passwords zend-framework2 salt


    【解决方案1】:

    我建议你做几件事:

    • 在您的用户表中添加另一列,称为 salt 或类似名称。当用户注册时,创建一个 salt 并将其存储到此列中。
    • 将您网站的静态盐存储在配置文件中。
    • 当用户注册时,使用散列函数(如果您愿意,可以使用 sha2)并将密码、静态盐和自定义盐连接成一个经过散列的字符串。
    • 存储哈希并确保在登录时使用相同的方法检查密码。

    这里有更多信息:http://framework.zend.com/manual/2.0/en/modules/zend.crypt.key.derivation.html

    文档也暗示了这个实现:http://framework.zend.com/manual/2.1/en/modules/zend.authentication.adapter.dbtable.html

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2014-01-04
      • 2015-12-28
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多