3

我正在开发一个PHP登录系统。我想实施一个限制,以便用户不能使用他们以前使用过的密码(最多 5 个旧密码)。存储密码的最佳选择是什么?我想出了两个想法:

1) 表:密码列:PasswordID、UserID、Password1、Password2、Password3、Password4、Password5、LastChanged、CurrentPassword。每个用户都有自己的行。随着时间的推移填满列并相应地重写。

或者

2) 表:密码列:PasswordID、UserID、Password、DateChanged。每个用户最多有 6 行。PHP 将处理确定哪个是当前通过日期。

4

2 回答 2

4

选项 2 是两个选项中较好的一个,只是您不必担心删除行。大多数 RDBMS 都有一种基于某些东西选择前 N 条记录的方法。

选项 2 更好的主要原因是,如果您增加或减少必须查询的记录数,您可以简单地更新数据库记录。

于 2013-04-18T01:52:04.493 回答
0

虽然我的回答来晚了,但你的#2 更好。但是,我只是通过创建一个触发器来创建用户密码历史记录,该触发器在另一个表上更新之前存储用户表行。从这里开始,php 脚本将新密码与此备份表上的最后五个密码进行反检查。

这避免了用垃圾记录过度填充用户表,从而加快了登录身份验证和新密码过程。

于 2020-01-21T07:36:57.330 回答