密码每x天过期,强制更改10天失效


Expiring passwords every x amount of days with a forced change 10 days to expy?

为CakePHP 1.3编写一个新特性,我希望密码在x天后过期,并在y天到期时自动将密码更改为随机字符串,并通过电子邮件向用户发送新密码或登录链接。在服务器上使用crontab是否正确?或者安全呢?

cronjobs和securich是两个非常不同的东西。第一种方法在定义的时间间隔或给定的时间内启动流程。第二个工具似乎是管理mysql-server的用户权限的工具。显然,第二种方法对您帮助不大,因为您关心的不是服务器的特权,而是数据库中的密码(等)

您可以使用cron作业进行清理。这意味着,您在间隔(假设)1天内启动一个脚本,该脚本遍历用户表并执行需要执行的操作。如果最近一次修改密码是在x天前,请发送邮件;如果最近一次修改密码是在x + y天前,请修改密码并通过邮件发送新密码。因此,您需要一个新的列last_password_change_date或其他东西,脚本需要知道,xy是什么。

我肯定会把它设置为每天运行一个PHP脚本和cronjob。

在您的数据库中跟踪自密码上次重置以来的日期(对于每个用户),这应该是相当容易开发的。

通常web应用程序不使用用户提供的身份验证令牌来对数据库连接进行身份验证(securich是关于管理数据库中的身份验证令牌/权限)。你的代码所做的(操作认证令牌)与它被调用的方式完全不同。

看看调用操作....

的问题

有很多工具可用于计划程序。cron和at通常是Unix/Linux/POSIX系统的标准配置,因此它们是这项工作的明智工具。但是一定要调用CLI PHP解释器来运行代码——不要试图以web页面的形式调用作业(至少不要直接调用)——web页面不是用来调用长时间运行的进程的。

但是为什么不在用户长时间未登录时强制他们更改密码呢?

(我也反对强迫用户更改密码的做法,特别是为他们更改密码并通过电子邮件发送新密码或替代令牌的做法)