我有这个网站,有一个简单的CMS,当用户注册时,他们的密码在MD5中加密.
但由于我不喜欢这种加密,而且我已经在重新构建我的CMS了,所以我也改变了哈希.
现在,他们是一种在不丢失我的数据库用户的情况下在另一种加密方法中更改MD5的方法吗?
解决方法:
您可以在数据库中添加3个新列,以保存密码.
newPassword,newSalt,isRequired
在这里,您可以保存由新密码创建的新盐(如果使用散列,如phps password_hash),新的散列密码,以及这是否是自散列更新以来的首次登录尝试.
方法
您需要修改登录脚本以检查isRequired是否为YES.如果是这样拉旧的哈希密码和旧盐,否则使用新密码和新盐.
对于所有当前用户,将isRequired设置为YES.
在用户登录时,如果isRequired值为YES,则将用户重定向到密码重置页面,否则继续正常.
此密码重置页面本质上是新的注册页面,但针对当前用户进行了修改,因此他们不必根据您处理数据的方式创建新的用户名等.
当用户重置密码时,将使用新方法对其进行哈希处理并按照“新”部分中的常规方式存储在数据库中,并将isRequired值设置为NO.
对于新用户,请确保注册页面将其密码放入newPassword列并使isRequired为NO.
下线
最后,当所有isRequired值都为NO时,您可以更新数据库并编码以删除所有未使用的旧列,删除与MD5哈希等相关的所有代码.
如果某些旧用户仍未更改其密码,则可以删除其用户并重新注册.也许会向所有用户发送一封电子邮件,说明如果您在x天之前没有更新他们的密码,他们的数据将被删除,他们将不得不重新注册.
标签:php,sql-server,hash
来源: https://codeday.me/bug/20190527/1166984.html