JeecgBoot V3.9.6 于 2026-11-05 发布,距上一版两个多月。这一版的主轴不是功能堆叠,而是安全。社区与安全研究人员提交的 67 项漏洞在这一版集中收口,方向覆盖越权、租户隔离、登录爆破、短信轰炸、SQL 注入、SSRF、XSS 以及远程代码执行。功能侧同步补了 AI 流程编排的图像生成节点和 Online 表单的积木报表打印。




权限补齐是这次修复的大头
填值规则、校验规则、字典删除、首页配置、部门权限与部门角色授权、数据规则、网关路由、系统监控、第三方集成配置,以及各模块的 Excel 导入导出接口,全部补上了权限校验。此前普通登录用户能越权触达的入口,这一版基本堵死。

用户隐私的处理更直接:用户列表新增”选人”权限,没有用户管理权限的账号,手机号、邮箱这类字段一律不返回。多租户场景下,用户查询只返回本租户数据;批量改用户、设部门负责人、变更租户拥有者,只允许管理员或本租户管理员执行。租户被接管的路径被切断。

登录侧的变化值得单独说。账号不存在与密码错误现在统一提示,并且都计入失败次数——猜密码的枚举成本被拉平。重置密码的短信验证码错满 5 次即作废,短信接口按手机号限流,图形验证码一次一用且默认开启,扫二维码登录的二维码编号换成不可预测的随机串。第三方登录回调跳转地址加了白名单,顺带修掉一处反射型 XSS。

内部接口这块,/sys/api、/airag/api、/online/api 禁止外部直接访问,单体和微服务网关同步拦截。OPTIONS 预检请求不再能绕过签名与授权校验——这个绕过手法在网关鉴权里是老问题,补上之后前端跨域预检需要确认网关放行规则是否仍然匹配。

注入、SSRF 与监控面
表字典查询和字典过滤条件做了加固,堵住越权读表与 SQL 注入。数据源连接会拦截危险驱动和参数,防止在测试连接环节被远程执行代码或写任意文件。接口与 Excel 导出不再回显数据库密码。


SSRF 的修复补全了跳转绕过、0.0.0.0 和 IPv6 本机地址的拦截,同时新增内网地址开关和白名单配置。这里有个配置边界要讲清楚:这个开关默认应当保持关闭,只有确实需要让服务端访问内网资源(比如对接内网图床、内网模型服务)时才打开,并且白名单要精确到网段而非域名后缀。一旦放开且白名单写得过宽,服务端请求伪造的攻击面会重新打开,等于把这次修复的成果还回去。

WebSocket 只能订阅自己的消息,消息详情和发送记录不能查看他人数据。actuator 监控端点收紧到仅管理员可访问,请求追踪记录做了脱敏。签名校验拒绝空密钥,出厂演示凭据已清空。

AI 平台同样在射程内:AI 应用与外挂数据接口补权限,AI 语音/视频记录只能查看和删除自己的,AI 工具调用增加身份校验防止伪造管理员,AI 流程导入补权限以防远程执行代码,MCP 命令执行前拦截危险字符。

图像生成节点与 AI 流程
AI 流程编排新增”图像生成”节点,支持文字描述生成,也支持参考图生成。AI 应用侧同步接入图像生成能力,千问图片模型保留 qwen-image-3.0-pro 与 qwen-image-3.0,并标注了文生图、图生图两种模式。



交互细节上有几处调整:AI 中会显示工具调用,工具名称显示为流程名;生成内容时用户向上滚动不再被强制拉回底部。AI 流程接口拆成独立接口,AI 依赖改为按需加载。修复了 AI 模块集成 LiteFlow 后业务模块无法自定义表结构的问题——这个坑对已经上了 LiteFlow 的项目影响不小。

另外修掉的问题包括:智能体流程无法使用对话中上传的图片、本地 Ollama 模型调用报错、清空额外参数不生效、Docker 部署下插件调用连接被拒绝。AI 聊天助手的限流配置做了统一,配置为空或 0 时关闭对应限流。

Online 表单与代码生成器
Online 表单支持一键生成积木报表打印,生成后自动集成打印地址。同时新增 Online 表单数据查询接口,供积木报表直接查询 Online 数据,省掉中间层转发。


导入的 Java 增强新增导入前、导入后批量处理钩子,整批导入只取一次增强对象,批量场景下的性能损耗明显下降。树表列表新增”生成测试数据”按钮,测试数据按根节点生成,不再乱填父节点。按钮按详情、编辑、新增权限分别显示,Tab 风格子表弹窗的新增按钮也按权限隐藏。popup 和 popup 字典编辑时回显已勾选项,批量删除也会执行 JS 增强的删除前事件。

修掉的问题清单:popup 字典超过 10 个值翻译不出来、高级查询”不为空”无效、SQL Server 下 Online 报表加 where 条件报错、ERP 子表分页数据随主表整体提交、一对一子表列数设置不生效。

代码生成器侧,修复了一对多子表的 popup 字典、关联记录、分类字典树、自定义树未生成的问题;小数字段、高级查询 popup 字典和关联记录字典项未生成的问题;导出时 popup 字典和主子表组件未翻译的问题;移动端一对一子表没有铺满屏幕、原生表单出现两个滚动条的问题。

系统管理与性能
管理员改完字典,其他用户刷新页面即可看到最新值,字典没变时不重复加载。角色授权、部门角色授权后立即生效,用户不用重新登录。部门树加载提速,SQL Server 下表单办理页加载慢的问题明显改善。租户套餐包菜单支持分配数据规则。首页配置的用户和角色支持多选并显示名称。部门导入导出支持机构简称,部门管理用户列表增加”移出”操作,我的部门用户列表支持按姓名模糊查询。

还修了回收站字典仍可在表单上选择、已冻结用户可重复冻结、我的消息发布人未翻译、表字典分页回填字段错位,以及 HTTPS 反向代理下页面白屏、大屏 WebSocket 数据集无法连接等问题。



升级路径与三个必做动作
选人权限。选人组件、通讯录等功能依赖”标准权限 > 用户选择查询”。升级脚本默认只授权给管理员,其他角色需要到角色授权里手动勾选,授权后重新登录生效。升级后通讯录打不开,先查这里。


新增按钮权限。升级脚本会把本版新增的按钮权限自动授权给已拥有对应菜单的角色,升级前能用的功能升级后照常可用,这一条不需要额外操作。

微服务部署。微服务模式默认未开启 flyway,必须手工执行 flyway/sql/mysql 目录下的升级脚本,顺序是 V3.9.5_1 到 V3.9.5_4,再到 V3.9.6_0 开头的脚本。执行完别急着启动,先连库确认:

SELECT version, description, success
FROM flyway_schema_history
ORDER BY installed_rank DESC
LIMIT 10;
success 必须全为 1,且最新记录的 version 覆盖到 3.9.6。若出现 success=0,说明某条脚本中途失败,需要人工修复后补执行,不能直接重启服务——否则后续脚本会因版本号断层而跳过。

OpenAPI 凭证。内置演示 AK/SK 已清空,升级后调用 OpenAPI 必然返回鉴权失败。操作路径是进入”OpenAPI 授权管理”,重新生成 AK/SK 并下发给调用方。联调时先用一对新凭证请求一个只读接口,确认签名通过后再切生产流量,避免批量调用方同时 401。



平台定位没有变
JeecgBoot 仍是”低代码 + 零代码”双模式:零代码下在线配置表单即可跑通增删改查,低代码下由 AI 输出前后端代码、建表 SQL 与菜单权限,遵循”AI 生成 → 在线配置 → 代码生成 → 手工合并”的路径。技术栈是 Spring Boot 3 + MyBatisPlus + Vue3 + TypeScript + Vite6 + Ant Design Vue4,微服务侧走 Spring Cloud Alibaba(Nacos、Gateway、Sentinel、Skywalking),单体和微服务可切换。数据库兼容 MySQL、PostgreSQL、Oracle、SQL Server、MariaDB、达梦、人大金仓。



源码在 GitHub 与 Gitee 同步发布。安全修复密集的版本,升级窗口不宜拖太久,尤其是暴露在公网的多租户部署。
ID:7973