我受雇在新的 PHP 5.3 服务器上使用 Laravel 4 重建一个基于 CodeIgniter 1.7.3(在 PHP 4.2 服务器上)构建的积极使用的应用程序。
该系统有大约 500 个用户,其密码使用加盐 SHA-1 哈希加密。我想使用 bcrypt 来增加应用程序的安全性以及与 Laravel 4 的身份验证系统集成。
您如何建议迁移这些用户密码?
我受雇在新的 PHP 5.3 服务器上使用 Laravel 4 重建一个基于 CodeIgniter 1.7.3(在 PHP 4.2 服务器上)构建的积极使用的应用程序。
该系统有大约 500 个用户,其密码使用加盐 SHA-1 哈希加密。我想使用 bcrypt 来增加应用程序的安全性以及与 Laravel 4 的身份验证系统集成。
您如何建议迁移这些用户密码?
哈希的全部意义在于您无法恢复原始密码。
你有三个选择:
存储 SHA1 散列的 bcrypt 散列,然后 SHA1 散列每个密码,然后在每次登录时对其进行 bcrypt。
这可能不是一个好主意。
下次用户登录时升级每个哈希值。(这样您就可以使用纯文本进行哈希处理)
这是最好的选择,但是您需要保留 SHA1 哈希值和转换代码,直到每个用户都登录
将每个用户重置为随机 bcrypted 密码,并强制他们全部使用忘记密码将其更改回来。
你可能不想这样做
您可以为每个用户创建一个随机密码,并使用新密码向每个人发送一封通知电子邮件。但是,如果用户没有看到电子邮件,这将导致混乱。
我建议您为 bcrypt 值添加另一个 db 字段,然后在更改后用户第一次登录时创建一个条目。您可以使用单独的字段或删除旧的哈希来跟踪。
当您的活动用户迁移后,您可以随意对其余用户群使用随机密码方法来完成迁移。