分享帝国CMS等保要求口令复杂度和有效期的修改,等保其中一个要求是针对口令复杂度、密码有效期设置。
下面小编进入正题讲解改造方法:
1、增加口令复杂度
修改\e\admin\user\EditPassword.php
修改\e\class\functions.php的第4940行
把
$a=",password='$password',salt='$salt',salt2='$salt2';
替换为
下面小编进入正题讲解改造方法:
1、增加口令复杂度
修改\e\admin\user\EditPassword.php
打开\e\data\language\gb\pub\message.php增加以下内容
- // 新增密码复杂性检查
- if(strlen($password) < 8)
- {
- printerror("PasswordTooShort","history.go(-1)");
- }
- // 检查密码是否包含至少一个字母
- if(!preg_match('/[a-zA-Z]/', $password))
- {
- printerror("PasswordNoLetter","history.go(-1)");
- }
- // 检查密码是否包含至少一个数字
- if(!preg_match('/\d/', $password))
- {
- printerror("PasswordNoDigit","history.go(-1)");
- }
- // 检查密码是否包含至少一个特殊字符
- if(!preg_match('/[\W_]/', $password))
- {
- printerror("PasswordNoSpecialChar","history.go(-1)");
2、修改密码有效期
- 'PasswordTooShort'=>'密码不能少于8位',
- 'PasswordNoLetter'=>'至少一个字母',
- 'PasswordNoDigit'=>'至少一个数字',
- 'PasswordNoSpecialChar'=>'至少一个特殊字符',
- 'Password_old'=>'您的密码已过期,请立即修改密码。',
修改\e\class\functions.php的第4940行
修改\e\class\functions.php的第4960行
- $adminr=$empire->fetch1("select last_password_update_time,userid,groupid,classid,userprikey,uprnd from {$dbtbpre}enewsuser where userid='$userid' and username='".$username."' and rnd='".$rnd."' and checked=0 limit 1");
修改\e\admin\user\EditPassword.php
- //新增密码是否过期,在数据库中为管理员表添加了一个字段,用来记录密码的最后更新时间
- $last_password_update_time = $adminr['last_password_update_time'];
- $current_time = time();
- $valid_period = 30 * 24 * 60 * 60; // 30天的有效期,单位是秒
- if ($current_time - $last_password_update_time > $valid_period) {
- printerror("Password_old","index.php");
- }
- //新增密码是否过期,在数据库中为管理员表添加了一个字段,用来记录密码的最后更新时间
把
$a=",password='$password',salt='$salt',salt2='$salt2';
替换为
最后修改数据库,在phome_enewsuser表里面加一个last_password_update_time字段
- $a=",password='$password',salt='$salt',salt2='$salt2',last_password_update_time='$current_time'";