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/越权/反序列化专项测试,重点覆盖报表/导入导出/定时任务/模板引擎/上传等高危模块。