针对扫描报告中免登录接口暴露、敏感信息泄露及可写风险的整改记录。
扫描样例:GET /prod-api/zsjy/enrollment/info/query?examNumber=123456可免登返回身份证、手机号等。
| 优先级 | 项 | 处理结果 |
|---|---|---|
| P0 | POST /rs/init/update-menu 未授权改菜单 |
已整改 |
| P0 | Swagger /api-docs、/swagger-ui/** |
已下线 |
| P0 | Demo /demo/mail/**、/demo/queue/delayed/** |
已下线(运行包不再引入) |
| P0 | 招生 5 个免登接口(含扫描点名 query) |
已整改(须登录) |
| P1 | GET /cas/accessToken 密钥暴露与日志明文 |
部分整改(前端去 secret + 日志脱敏;后端 secret 外置待做) |
| P1 | POST /rs/application/submit 匿名滥投 |
已整改(须登录) |
POST /rs/init/update-menu 须登录问题:标注 @SaIgnore,未登录即可删改 sys_menu / sys_role_menu。
修改:
@SaIgnore@SaCheckPermission("system:menu:edit")文件:
backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsInitController.java验证:未带 Token → 401;无 system:menu:edit → 无权限。
问题:security.excludes 放行文档路径,且 springdoc 开启,便于枚举全量接口。
修改:
springdoc.api-docs.enabled / swagger-ui.enabled → falsesecurity.excludes 移除 /api-docs、/swagger-ui/**、/v3/api-docs/**、/webjars/** 等文件:
backend/ruoyi-admin/src/main/resources/application.yml验证:访问 /prod-api/swagger-ui.html、/prod-api/api-docs 不可用。
问题:ruoyi-demo 打入运行包,邮件、延迟队列等接口带 @SaIgnore。
修改:注释掉运行路径上所有 ruoyi-demo 依赖(admin + 各业务模块),Controller 不再注册。
文件:
backend/ruoyi-admin/pom.xmlbackend/ruoyi-modules/ruoyi-hq/pom.xmlbackend/ruoyi-modules/ruoyi-rs/pom.xmlbackend/ruoyi-modules/ruoyi-cw/pom.xmlbackend/ruoyi-modules/ruoyi-xg/pom.xmlbackend/ruoyi-modules/ruoyi-zsjy/pom.xmlbackend/ruoyi-modules/ruoyi-jcbt/pom.xmlbackend/ruoyi-modules/ruoyi-xskh/pom.xmlbackend/ruoyi-modules/ruoyi-bzrkh/pom.xmlbackend/ruoyi-modules/ruoyi-aqbw/pom.xml说明:源码目录 ruoyi-modules/ruoyi-demo 仍保留,默认构建/部署不加载。
验证:/prod-api/demo/mail/**、/prod-api/demo/queue/delayed/** → 404。
问题:以下接口标注 @SaIgnore,未登录即可访问;其中 query 仅凭准考证号即可返回身份证、手机号、住址等敏感信息。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /zsjy/enrollment/info/query |
按身份证/准考证查报名 |
| POST | /zsjy/enrollment/info/submit |
学生提交报名 |
| GET | /zsjy/enrollment/info/myStatus |
查本人报名状态 |
| GET | /zsjy/enrollment/info/colleges |
学院列表 |
| GET | /zsjy/enrollment/info/majors/{collegeId} |
专业列表 |
修改:
@SaIgnore,走统一登录校验isToken: false,请求携带 Token文件:
backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/controller/ZsjyEnrollmentInfoController.javamobile/src/api/enrollment.jsmobile/src/pages/enrollment/index.vue影响:新生报名页须先登录再查询/提交;未带 Token 访问上述接口返回 401。
验证:
GET /prod-api/zsjy/enrollment/info/query?examNumber=123456 → 401问题:
CAS_CLIENT_SECRET(虽未参与换票,但会进浏览器包)修改:
CAS_CLIENT_SECRET;换票仍只调 GET /cas/accessToken?code=...CasController 日志仅保留 base/client_id/长度等非敏感信息;失败响应不再回传 CAS 原始报文文件:
web/src/views/login.vuebackend/ruoyi-admin/src/main/java/org/dromara/web/controller/CasController.javadocs/开发文档/统一身份认证接入说明.md(同步说明)对登录影响:无(前端本未使用 secret;日志脱敏不改换票逻辑)。
未做(后续建议):
CLIENT_SECRET 配置外置 + 向 CAS 轮换密钥/cas/accessToken IP 限流POST /rs/application/submit 须登录问题:@SaIgnore + security.excludes 放行,可匿名灌简历数据。
修改:
@SaIgnoresecurity.excludes 删除 /rs/application/submitapplicantId = LoginHelper.getUserId()文件:
backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsApplicationController.javabackend/ruoyi-admin/src/main/resources/application.ymldocs/开发文档/API/招聘模块API.md影响:招聘门户投递须先登录;/rs/job/public/** 公开浏览不受影响。
web。mobile。POST /rs/init/update-menu 无 Token → 401/swagger-ui.html、/api-docs 不可用/demo/mail/** → 404GET /zsjy/enrollment/info/query?examNumber=123456 无 Token → 401POST /rs/application/submit 无 Token → 401;登录后可提交| 文档 | 内容 |
|---|---|
问题整改/P0-rs-init-update-menu免登整改说明.md |
菜单更新接口 |
问题整改/P0-Swagger与Demo下线整改说明.md |
Swagger / Demo |
问题整改/P1-CAS换票密钥与日志脱敏整改说明.md |
CAS |
问题整改/P1-rs-application-submit须登录整改说明.md |
应聘提交 |
文档日期:2026-09-22
主题:安全扫描修改