SpringBoot + Vue 开源框架常见安全风险与防护要点 一 通用高风险漏洞
- SQL 注入 :使用字符串拼接或 MyBatis 的 ${} 直接插值最易被利用;应使用参数化查询/预编译 、对排序/搜索关键字做白名单校验 ,并清理可控的 ORDER BY/Group By 输入。
- 文件上传 :未校验Content-Type/魔数 、未重命名 、未限制存储路径 与可执行后缀,易被上传 WebShell;应启用白名单、随机名、隔离目录、禁用执行权限。
- XSS :服务端返回或前端模板直接渲染未转义 的用户输入,导致存储/反射型 XSS;应在服务端对输出进行HTML 转义 ,前端避免使用 v-html 渲染不可信内容。
- CORS 配置不当 :将 Access-Control-Allow-Origin: *与凭据(如 withCredentials )混用,或信任任意 Origin/Referer/Host,会被工具判定为高危;应改为精确匹配白名单并配合网关/过滤器校验。
- 错误信息泄露 :将堆栈/SQL 直返前端,既暴露实现细节又利于攻击链构造;应统一异常处理,生产环境不返回技术细节。
- CSRF 与权限绕过 :状态改变类接口缺少CSRF Token 或SameSite 策略,或存在URL 规则绕过 ;应使用 Token/双重提交 Cookie,并在网关/安全框架层做路径与方法严格匹配。
二 框架特有或高频问题
-
RuoYi 系列(若依)
- Shiro RememberMe 反序列化与默认密钥 :早期版本存在默认 AES Key 导致 rememberMe Cookie 反序列化 RCE;建议升级至包含随机密钥的版本(如 ≥4.6.2 ),并自定义高强度密钥、启用 AES-GCM。
- 多处 SQL 注入 :如 /system/role/list 、 /system/role/export 等接口在 <4.6.2 版本可通过 params[dataScope] 注入;应升级并统一改为参数化查询。
- 任意文件下载(CNVD-2021-01931) : /common/download/resource 未校验路径,利用 ../ 遍历读取敏感文件;应升级至 ≥4.5.1 并增加路径与后缀白名单。
- 定时任务 RCE : <4.7.8 可通过修改任务内容触发 SnakeYAML/JNDI 等加载远程恶意类;应升级并限制任务内容、禁用危险协议(rmi/ldap/http)。
- 历史依赖漏洞 :如 Thymeleaf 模板注入(≤3.0.12 )、Log4j2 (≤2.17.0)等,需按官方版本升级。
-
Jeecg-Boot
- SQL 注入 :如 /onlDragDatasetHead/getTotalData 、 /jmreport/qurestSql 等接口存在拼接/模板注入风险;建议升级至 v3.7.2+ 并严格参数化。
- 表达式/脚本注入 :AviatorScript 表达式未过滤可触发命令执行;应禁用危险函数或启用沙箱。
- Fastjson/JNDI 反序列化 :老版本 Fastjson 可被 JNDI 加载远程类;应升级并关闭 JNDI Lookup。
- 未授权文件上传/信息泄露 :如 /jmreport/upload 未鉴权上传、 /sys/user/querySysUser 未鉴权访问;需加鉴权与细粒度权限控制。
-
人人开源 Renren-Fast
- CORS 与安全过滤器误配 :常见为 Access-Control-Allow-Origin: *或 JWTFilter 处理不当引发跨域与鉴权问题;应改为白名单并规范过滤器链。
三 Spring 生态与依赖组件风险
- SpEL 表达式注入 :历史版本存在多处 SpEL 注入导致 RCE,如 Spring Data REST PATCH (CVE-2017-8046)、Spring WebFlow (CVE-2017-4971)、Spring Messaging/WebSocket (CVE-2018-1270)、以及 Spring Framework 5.0--5.0.4 / 4.3--4.3.14 的 WebSocket 相关缺陷;应升级至修复版本,避免将用户输入作为 SpEL 解析。
- Spring Cloud Gateway Actuator SpEL 注入(CVE-2022-22947) :可访问 Actuator 时通过路由刷新注入 SpEL 执行命令;应升级至 3.1.1+/3.0.7+ ,并限制 Actuator 暴露与鉴权。
- Spring Cloud Function SpEL 注入(CVE-2022-22963) :请求头 spring.cloud.function.routing-expression 未过滤导致 RCE;应升级并移除/限制该请求头解析。
- Spring Framework 远程代码执行(CVE-2022-22965,Spring4Shell) :特定绑定与表达式解析路径组合可写属性触发 RCE;应升级至修复版本并避免不安全的数据绑定配置。
- Spring Security 认证绕过(CVE-2022-22978) :早期版本存在绕过;应升级并复核安全配置。
- H2 Database Console 未授权访问 :开启 spring.h2.console.enabled=true 且 web-allow-others=true 可被未授权访问并用于 JNDI 攻击;生产应关闭或限制访问来源。
四 快速自检与加固清单
- 依赖与版本 :建立SBOM ,定期升级 Spring Boot/Spring Security/Spring Cloud/第三方库 到安全版本;重点排查历史 SpEL/CVE 与 H2 Console 暴露。
- 输入校验与输出编码 :全链路白名单校验 (参数、Header、Content-Type、文件名),服务端HTML 转义 ;避免 ${} 字符串拼接 SQL,统一用参数化查询。
- 文件上传 :白名单 MIME/魔数 、随机重命名 、隔离目录 、禁用执行权限 ,上传后二次校验 与病毒扫描。
- 认证与会话 :强口令策略与锁定/验证码 ,安全的 RememberMe 实现(强密钥、随机化),JWT 短有效期与刷新机制,会话固定防护。
- 授权与访问控制 :基于角色/数据权限 的细粒度控制,接口级 ACL ,关键操作二次确认 与审批。
- CORS/CSRF :精确白名单 匹配 Origin ,避免 Access-Control-Allow-Origin: * 与凭据混用;状态改变接口使用 CSRF Token/SameSite。
- 错误处理与日志 :统一异常处理,生产不暴露堆栈/SQL ,敏感日志脱敏 ;开启审计日志 与访问日志。
- Actuator/DevTools :生产关闭或严格鉴权 Actuator,限制端点;禁用不必要的 DevTools 远程调试。
- 安全配置基线 :开启 HTTP 安全头 (如 CSP、X-Frame-Options、X-XSS-Protection、Strict-Transport-Security ),配置 TLS,最小权限运行(非 root)。
- 渗透测试与代码审计 :对SQLi/XSS/文件上传/CSRF/越权/反序列化 专项测试,重点覆盖报表/导入导出/定时任务/模板引擎/上传等高危模块。