Security 我如何告诉我的用户他们';您输入了旧密码吗?
在阅读之后,我一直在想如何实现这样的特性 我当前正在用户表中存储密码Security 我如何告诉我的用户他们';您输入了旧密码吗?,security,passwords,Security,Passwords,在阅读之后,我一直在想如何实现这样的特性 我当前正在用户表中存储密码 ID | Email | Pswd ------------------------------------------ 1 | bob@no.domain | Argon2ID hash salted 因此,我需要某种类型的password\u history表 UID | Pswd | Date | IP --------------
ID | Email | Pswd
------------------------------------------
1 | bob@no.domain | Argon2ID hash salted
因此,我需要某种类型的password\u history
表
UID | Pswd | Date | IP
-------------------------------------------------------------------
1 | Argon2ID hash salted | 1454-01-05 21:18:01 | 127.0.0.1
如果用户的密码与当前密码不匹配,请检索所有旧密码并根据所有旧密码进行验证
这可能需要一些时间,因为Argon2ID密码验证需要约160毫秒,具体取决于服务器
10个旧密码x 160毫秒=仅验证1600毫秒
这种方法似乎效率低下。我如何实现这一点
是否要存储所有用户的旧密码?我想说的是,您可以更改加密方法,以减少使用较旧密码的时间。当用户更改为新密码时,您可以从用户处获取旧密码。如果您担心安全问题,存储所有用户的密码实际上不是一个好主意。也许仅仅存储最后两个密码就足够了。您可以向用户表中再添加两列并放弃密码历史记录表。您不应100%阻止用户使用旧密码,也不应警告用户重复使用密码。这种警告的最初概念来自这样一个世界,在这个世界上,安全人员将密码过期视为一种良好做法(现在已知为错误),并假设用户就像拥有完美内存的计算机。这个世界现在被认为是虚构的,2003年的旧NIST指南已经被抛弃,取而代之的是有利于用户的新指南。不要把恼人和安全混为一谈。@kks21199不,不能对旧密码使用较弱的加密格式!!它们和当前密码一样敏感。@Daskwuff我的意思是用与主密码相同的加密方式存储两个密码,但就我个人而言,我不认为必须存储旧密码并承担更多的保护责任有什么意义。