项目中用非明文方式存储密码,当出现问题时,如果查找原因?详细内容看描述

网站中存储密码的方式为加密方式(非明文,不可逆)
最近有一些用户反应账号密码输入均正确,但提示账号密码错误,无法登陆。
这时我们应该如何查找该问题的原因?
因为我们不知道是程序的BUG,还是因为用户误操作、记错密码或者用户故意捣乱导致的。
如果存储明文,这个问题就好说了,直接用他的密码验证一下就知道原因了,但网站又不允许存明文密码。
这种场景一般如何处理?程序应该如何改进,才能更好地解决?

阅读 5.2k
5 个回答
log.debug("数据库加密密码:{},输入的加密密码:{}", xxx, aaaa);

首先,知道用户的密码不是什么好事……
检查一下参数获取和加密逻辑有没有过变更,没有的话让用户自己找回密码/修改密码就完事了
看题目描述是你拿到了用户的输入,做一次加密流程比对一下数据就可以了,也不需要明文存储

应该是存的密码hash值,一般不会用可逆加密的。
拿一个已知的密码,跑一下密码验证程序,看看跟数据库里存储的值是否相同。
如果不一样,那可能是hash的key变了,hash用的具体算法变了什么的。可以让用户更改密码,或者你把存储的hash值改了,也就是后台帮他忙“更新”一下密码。

如果是部分用户出现了问题,部分没出现问题,你可能要考虑下是不是用户输入的用户名和密码有什么特殊性触发了程序上的bug,你可以问下这些投诉的用户他们的账号名是什么,根据账户名来打个log,在应用你的加密算法做个对比应该就能找到问题了

出现这种情况,可能你注册的时候算法是正确的,但是修改密码时,可能是前端忘记进行加密或者后端代码你和注册时的加密方法不一致导致的这样的情况,理论上应该不会是用户故意捣乱来用这种理由来反馈的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题