8

我受雇在新的 PHP 5.3 服务器上使用 Laravel 4 重建一个基于 CodeIgniter 1.7.3(在 PHP 4.2 服务器上)构建的积极使用的应用程序。

该系统有大约 500 个用户,其密码使用加盐 SHA-1 哈希加密。我想使用 bcrypt 来增加应用程序的安全性以及与 Laravel 4 的身份验证系统集成。

您如何建议迁移这些用户密码?

4

3 回答 3

11

哈希的全部意义在于您无法恢复原始密码。

你有三个选择:

  • 存储 SHA1 散列的 bcrypt 散列,然后 SHA1 散列每个密码,然后在每次登录时对其进行 bcrypt。
    这可能不是一个好主意

  • 下次用户登录时升级每个哈希值。(这样您就可以使用纯文本进行哈希处理)
    这是最好的选择,但是您需要保留 SHA1 哈希值和转换代码,直到每个用户都登录

  • 将每个用户重置为随机 bcrypted 密码,并强制他们全部使用忘记密码将其更改回来。
    你可能不想这样做

于 2013-10-03T14:28:07.660 回答
7
  • 在数据库中添加一列,告诉系统使用了哪种散列算法
  • 登录时,正常检查凭据
  • 如果他们使用旧的并且登录成功 - bcrypt 他们输入的密码并在数据库中更新他们的密码和算法。
于 2013-10-03T14:30:59.540 回答
1

您可以为每个用户创建一个随机密码,并使用新密码向每个人发送一封通知电子邮件。但是,如果用户没有看到电子邮件,这将导致混乱。

我建议您为 bcrypt 值添加另一个 db 字段,然后在更改后用户第一次登录时创建一个条目。您可以使用单独的字段或删除旧的哈希来跟踪。

当您的活动用户迁移后,您可以随意对其余用户群使用随机密码方法来完成迁移。

于 2013-10-03T14:34:45.697 回答