当前位置: 首页 > news >正文

【JAVA】后台管理系统密码复杂度和修改密码处理

一、后台管理系统密码要求

后台管理系统密码要求

口令有效期:90天

口令长度8位及8位以上

口令复杂度要求,至少包含以下四类字符中的三类字符:

  • 英文大写字母(A 到 Z)、
  • 英文小写字母(a 到 z)、
  • 10个基本数字(0 到 9)、
  • 特殊字符(例如 !、$、#、%、@、^、&);

口令不与前3次重复

口令注意事项:

(1)禁止使用连续的三个数字或键盘连续的三个字母作为密码的组成部分,如asdf@123、abcd@1234 、qaz@wsx等;

(2)禁止使用系统账号、姓名、出生日期的作为密码的组成部分,如:zhangsan@123、admin@123、hhh@2021;

(3)避免使用字典口令,包括许多大家习惯性设置的口令,比如常见的字典口令:Qaz@wsx、Admin123、hkcts@123、hhh12345等。

二、怎么做

1、密码复杂度

    /**
     * 校验复杂度
     */
    public Boolean checkPWD(String PWD) {

        // 规定的正则表达式
        // (?![a-zA-Z]+$) 表示 字符串不能完全由大小写字母组成
        // (?![A-Z0-9]+$) 表示 字符串不能完全由大写字母和数字组成
        // (?![A-Z\W_]+$) 表示 字符串不能完全由大写字母和特殊字符组成
        // (?![a-z0-9]+$) 表示 字符串不能完全由小写字母和数字组成
        // (?![a-z\W_]+$) 表示 字符串不能完全由小写字母和特殊字符组成
        // (?![0-9\W_]+$) 表示 字符串不能完全由数字和特殊字符组成
        // [a-zA-Z0-9\W_]{8,} 表示 字符串应该匹配大小写字母、数字和特殊字符,至少匹配8次
        String regex = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![a-z0-9]+$)(?![A-Z\\W_]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";

        return ReUtil.isMatch(regex, PWD);
    }

	/*** 校验复杂度*/public Boolean checkPWD(String PWD) {// 规定的正则表达式// (?![a-zA-Z]+$) 表示 字符串不能完全由大小写字母组成// (?![A-Z0-9]+$) 表示 字符串不能完全由大写字母和数字组成// (?![A-Z\W_]+$) 表示 字符串不能完全由大写字母和特殊字符组成// (?![a-z0-9]+$) 表示 字符串不能完全由小写字母和数字组成// (?![a-z\W_]+$) 表示 字符串不能完全由小写字母和特殊字符组成// (?![0-9\W_]+$) 表示 字符串不能完全由数字和特殊字符组成// [a-zA-Z0-9\W_]{8,} 表示 字符串应该匹配大小写字母、数字和特殊字符,至少匹配8次String regex = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![a-z0-9]+$)(?![A-Z\\W_]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";return ReUtil.isMatch(regex, PWD);}

密码与前三次重复

/*** 校验密码是否和前3次重复*/public Boolean checkRepeatPWD(String pwd,TUser tUser) {List<TUserPasswordLog> list = tUserPasswordLogMapper.selectLimt(tUser.getLoginName());if(CollectionUtils.isNotEmpty(list)) {for (TUserPasswordLog tUserPasswordLog : list) {if(pwd.equals(tUserPasswordLog.getPassword())) {return false;}}}return true;}
@Repository
public interface TUserPasswordLogMapper extends BaseMapper<TUserPasswordLog>{/*** 更新管理员最后登录时间   id,user_name as userName,login_name as loginName, password*/@Select("<script>" +"select *  from  t_user_password_log  WHERE LOGIN_NAME =  #{loginName} order by create_time desc limit 3 " +"</script>")public List<TUserPasswordLog> selectLimt(@Param("loginName") String loginName );}

处理校验过程

//校验密码复杂度Boolean checkPWD = tUserService.checkPWD(dto.getNewPassword());if (!checkPWD) {log.error(TUserConstant.PWD_CHECK_ERROR);return ResponseData.error(TUserConstant.PWD_CHECK_ERROR);}//校验是否三次密码重复Boolean checkRepeatPWD = tUserPasswordLogService.checkRepeatPWD(Des3Utils.get3DESEncryptECB(dto.getNewPassword(), AES_KEY), tUser);if(!checkRepeatPWD) {log.error(TUserConstant.PWD_REPEAT_ERROR);return ResponseData.error(ResponseCode.PASS_REPEAT_ERROR);}

修改密码日志表

-- Drop table

-- DROP TABLE public.t_user_password_log;

CREATE TABLE public.t_user_password_log (
    id varchar(32) NOT NULL,
    user_name varchar(255) NOT NULL,
    login_name varchar(255) NOT NULL,
    "password" varchar(255) NOT NULL,
    create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT t_user_password_log_pkey PRIMARY KEY (id)
);

 

-- Drop table-- DROP TABLE public.t_user_password_log;CREATE TABLE public.t_user_password_log (id varchar(32) NOT NULL,user_name varchar(255) NOT NULL,login_name varchar(255) NOT NULL,"password" varchar(255) NOT NULL,create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,CONSTRAINT t_user_password_log_pkey PRIMARY KEY (id)
);-- Permissions

 
 

http://www.lryc.cn/news/506734.html

相关文章:

  • 微服务SpringCloud链路追踪之Micrometer+Zipkin
  • Quartz(2-Trigger)
  • 【微信小程序开发 - 3】:项目组成介绍
  • Leetcode 三角形最小路径和
  • DataOps驱动数据集成创新:Apache DolphinScheduler SeaTunnel on Amazon Web Services
  • Android Studio的笔记--BusyBox相关
  • MySQL 存储过程与函数:增强数据库功能
  • 网络安全(3)_安全套接字层SSL
  • Git 快速入门
  • AI学习记录 - 依据 minimind 项目入门
  • 数据结构----链表头插中插尾插
  • 设计模式-读书笔记
  • c语言----选择结构
  • KS曲线python实现
  • 解决matplotlib中文乱码问题
  • 实操给桌面机器人加上超拟人音色
  • git stash 的文件如何找回
  • 皮肤伤口分割数据集labelme格式248张5类别
  • uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
  • 双内核架构 Xenomai 4 安装教程
  • 【redis的使用、账号流程、游戏服Handler的反射调用】1.自增id 2.全局用户名这样子名字唯一 3.
  • neo4j 图表数据导入到 TuGraph
  • 启动报错java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus
  • 【ubuntu18.04】ubuntu18.04挂在硬盘出现 Wrong diagnostic page; asked for 1 got 8解决方案
  • kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装
  • 游戏何如防抓包
  • 【LeetCode】每日一题 2024_12_19 找到稳定山的下标(模拟)
  • 运维 mysql、redis 、RocketMQ性能排查
  • [SAP ABAP] 将内表数据转换为HTML格式
  • LLM大语言模型私有化部署-使用Dify与Qwen2.5打造专属知识库