fix(security): 修复网安扫描相关严重/高危/中危漏洞并加固学生密码重置
关闭工作流 SpEL 命令执行与社团活动 SQL 注入,补齐越权、调试接口、登录喷洒和异常回显等问题;学生密码改为随机临时密码,Web/移动端支持复制。 Constraint: 流程发起/办理接口保持仅登录校验,避免影响请假审批 Rejected: 开启验证码 | Web/移动端登录页均未实现,开启会导致无法登录 Confidence: high Scope-risk: broad Not-tested: 生产环境与社团社长/指导老师视角 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
845c7fd942
commit
da8d332fac
79 files changed
+1156
-547
No files matched your search
@@ -10,16 +10,18 @@
|
||||
|
||||
### 模块功能
|
||||
|
||||
学工老师按学号查询学生基本信息后,一键将对应学生登录账号密码重置为系统固定默认值。
|
||||
学工老师按学号查询学生基本信息后,一键将对应学生登录账号密码重置为服务端随机生成的临时密码(2026-10-26 安全整改:取消固定默认密码)。
|
||||
**不复用** `system:user:resetPwd`,避免把系统用户管理权下放给学工老师。
|
||||
|
||||
**核心约束**:
|
||||
- 仅允许重置 `sys_user.account_type = '2'`(学生账号)
|
||||
- 要求 `user_id = xg_student_msg.id`,且 `user_name` 与学号一致(若有用户名)
|
||||
- 密码由服务端写死常量,前端不可传入自定义密码
|
||||
- 有菜单/按钮权限即可操作任意学生,不做班主任数据范围限制
|
||||
- 临时密码由服务端 SecureRandom 生成(10 位,含大小写、数字、特殊字符),前端不可传入自定义密码
|
||||
- 数据范围:超管、校级账号(无学院)可操作全部学生;学院账号只能查询/重置本学院(或一年级代理学院)的学生
|
||||
- 重置后立即踢下线该学生的所有在线会话
|
||||
- 操作日志不记录响应体,临时密码不落库日志
|
||||
|
||||
**固定默认密码**(服务端常量,勿在客户端硬编码用于改密请求):`Hzdyjsxs123456!@#`
|
||||
**临时密码**:仅在本次接口响应 `data` 中返回一次,由老师当面告知学生,学生登录后应自行修改。
|
||||
|
||||
### 权限说明
|
||||
|
||||
@@ -39,7 +41,7 @@
|
||||
| 接口名称 | HTTP 方法 | 路径 | 权限要求 | 功能描述 |
|
||||
| -------- | --------- | ---- | -------- | -------- |
|
||||
| 按学号查询学生 | GET | `/studentMsg/studentMsg/queryByStudentNo/{studentNo}` | `studentMsg:studentPwdReset:query` | 返回姓名、学号、班级、班主任 |
|
||||
| 重置学生密码 | PUT | `/studentMsg/studentMsg/resetStudentPassword/{studentNo}` | `studentMsg:studentPwdReset:reset` | 重置为固定默认密码 |
|
||||
| 重置学生密码 | PUT | `/studentMsg/studentMsg/resetStudentPassword/{studentNo}` | `studentMsg:studentPwdReset:reset` | 重置为随机临时密码 |
|
||||
|
||||
---
|
||||
|
||||
@@ -87,7 +89,7 @@
|
||||
|
||||
- **接口路径**:`PUT /studentMsg/studentMsg/resetStudentPassword/{studentNo}`
|
||||
- **权限标识**:`studentMsg:studentPwdReset:reset`
|
||||
- **功能描述**:将学号对应学生登录密码重置为固定默认值;写操作日志「重置学生密码」
|
||||
- **功能描述**:将学号对应学生登录密码重置为随机临时密码并踢下线;写操作日志「重置学生密码」(不记录响应)
|
||||
- **防重复提交**:`@RepeatSubmit`
|
||||
|
||||
#### 路径参数
|
||||
@@ -98,14 +100,15 @@
|
||||
|
||||
#### 请求体
|
||||
|
||||
无。密码由服务端常量生成 BCrypt 后写入,不允许客户端传密。
|
||||
无。临时密码由服务端随机生成并 BCrypt 后写入,不允许客户端传密。
|
||||
|
||||
#### 成功响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
"msg": "操作成功",
|
||||
"data": "Abcdef@123"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -117,6 +120,7 @@
|
||||
| 无登录账号 | 该学生没有登录账号,无法重置密码 |
|
||||
| 非学生账号 | 该账号不是学生账号,禁止重置 |
|
||||
| 学号与登录名不一致 | 学号与登录账号不一致,请联系管理员 |
|
||||
| 非本学院学生 | 只能操作本学院的学生 |
|
||||
| 无权限 | 403 |
|
||||
|
||||
---
|
||||
|
||||
Reference in new issue
Block a user