新密码与之前的3个不同


New password different from 3 previous ones

所以交易是这样的:我想强迫我的客户每3个月更改一次密码。这很容易。但我也希望他们选择一个不同的密码,这与之前的3个密码不同。

困难的是,我将4个信息(3个最后的密码和最后一次密码更改的日期)存储在数据库的同一行。

所以我正在设置row-->old_passwords = date()::psw_1::psw_2::psw_3并检查if($POST['password']== psw_1 || $POST['password']== psw_2 || $POST['password']== psw_3)

但是,我如何将新密码存储为psw_3,旧密码存储为psw_2,而那个密码存储为psw_1——最终擦除原始psw_1?

不要担心CWE-257-密码当然是散列的!

您应该执行"UPDATE"查询,用新密码更新字段吗?这样的东西应该可以工作,但一定要防止mysql注入。

正如@Fred-ii-所说,$POST['password']永远不会起作用,你应该阅读关于超全局的文章。$_POST['password']将给你更好的机会来实现你想要做的事情;)

$mysql->query("UPDATE tableStoringPwd pwd SET pwd.psw1 = pwd.psw2  , pwd.psw2 = pwd.psw3, pwd.psw3 = '" . $newPwd . "' WHERE userId = ". $userId );

编辑: