积木报表团队放出 JimuBI v2.5.6,这一版的重心不在新功能,而在把分享页和匿名访问这条链路整体加固了一遍。仪表盘配置、数据集 SQL 被匿名读取,请求签名可复用、时间戳可伪造,大屏取数接口的筛选条件和参数值存在注入风险——这些都属于必须尽快处理的问题。官方给出的建议很直接:所有用户升级到 v2.5.6。


依赖坐标与版本配套的硬约束
三个 starter 按 Spring Boot 大版本区分,坐标不能混用:

springboot3

<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimubi-spring-boot3-starter</artifactId>
<version>2.5.6</version>
</dependency>
springboot4

<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimubi-spring-boot4-starter</artifactId>
<version>2.5.6</version>
</dependency>
springboot2(不支持 AI 助手)

<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimubi-spring-boot-starter</artifactId>
<version>2.5.6</version>
</dependency>
Spring Boot 2 这条线要特别留意:AI 助手能力在该环境下不可用,一句话生成大屏、对话式修改这些功能拿不到。如果项目仍停留在 Boot 2 且业务上依赖 AI 生成,升级前先评估是否要顺带把运行时抬到 Boot 3。

另一个容易翻车的地方是配套。积木报表、积木 BI、JimuChatBI 三者签名方案同源,同时集成时必须一起升到同一版本线。只升其中一个,验签环节会直接报失败,表现为分享页打不开、数据集取数被拒。排查这类问题时先核对三个模块的版本号是否一致,比翻日志快得多。

安全修复的实际覆盖面
这一轮加固堵的漏洞可以归成几类。仪表盘查询接口在未登录状态下能读到任意仪表盘配置,现在匿名访问必须持有有效分享链接,返回内容里的敏感字段会被隐藏(GHSA-4gwq-w639-8jcc)。未登录用户借请求签名读取任意数据集 SQL 并取数的路径也被封了,匿名只能看已分享或模板页面中用到的数据集(GHSA-g663-2fcq-qq94)。

签名机制本身做了重做:签名不能再被复用到其他请求,时间戳伪造的口子一并关掉。前端不再内置固定秘钥,改成从后台获取短期签名票据并自动续期,这同时解决了后台自定义秘钥后敲敲云模式验签失败的老问题。

API 数据集和 AI 接口新增出站地址校验,防止被拿来探测服务器内网,规则与积木报表对齐(GHSA-5g5g-43q2-g87v)。这里有个适用边界要提醒:如果你的 API 数据集本来就指向内网合法服务,升级后可能被这条规则拦下。上线前把这类数据源列出来,逐条确认是否落在放行范围内,别等生产环境取数失败才发现。

大屏取数接口的两处 SQL 注入——筛选条件和数据集参数值——也一并修复。

分享页签名过期与多窗口推送
客户反馈最集中的两个问题在这版有了着落。匿名分享的大屏挂一到两小时后取数报”签名不匹配”,根因是签名过期后没有续期通道,现在分享页可免登录自动续期。验证方式不复杂:开一个匿名分享链接,挂机两小时以上再触发取数,用浏览器 Network 面板观察票据刷新请求是否按预期发出、取数响应是否正常返回,即可判定修复生效。

签名过期后首个请求和 AI 对话弹窗请求失败、分享仪表盘提示”无权限访问该数据集”或”Token 已过期或无效”、开启分享口令的链接匿名打开提示”未授权访问该仪表盘”、分享页免登录访问时请求头传无效值导致租户设置不生效——这些同源问题都在同一轮里处理掉了。

多窗口场景下只有一个窗口能收到 WebSocket 实时推送(issues/4831),以及 WebSocket 数据集组件推送标识每天变化(issues/4830),也修了。前者影响大屏投屏加后台监控并存的部署形态,后者会让依赖推送标识做路由的逻辑每天失准。

组件与渲染层的一批修正
跳转联动配成”本窗口打开”却在新窗口弹出(issues/4779),属于配置语义和实际行为脱节,改完联动逻辑才算自洽。预览和设计器里组件自定义 JS 脚本点击无反应,直接影响交互型大屏的交付。

暗黑插件下数值、文本、时间组件文字仍是黑色看不清,是样式层没跟随主题变量。HTTPS 反向代理只传 X-Forwarded-Proto 时页面资源按 http 加载导致白屏(issues/4786),这类问题在 Nginx 终止 TLS 的常见架构里出现频率不低,升级后建议顺手复测一遍代理链路。

表单接口查询字段大小写不一致导致取不到数据、定时刷新时登录失效让后台日志大量刷屏,这两个偏工程卫生,但后者对日志监控的干扰不小。

性能与配置体积
数据集修改后自动同步到引用它的组件(issues/4756),省掉逐个重选数据集的重复劳动。分享页访问数据集的权限校验做了优化,单次校验从约 5 秒降到毫秒级,高并发下不再拖慢数据库。数据集列表里”被大屏使用数量”的统计从数十秒提到秒级。

组件保存的配置内容做了精简,体积减少约四成,对配置表存储和传输都有实际收益。已下线的 3D 地图、VR 看房组件遗留文件也清理掉了。

AI 生成能力与 Skills
JimuBI 内置 Claude Code 积木 Skills,一句话就能出大屏或仪表盘,还支持对话式修改,上传截图可还原成可编辑模板。两个 Skill 分工明确:jimubi-bigscreen 负责大屏,比如”做一个智慧物流监控大屏”;jimubi-dashboard 负责仪表盘和门户,比如”生成一个销售运营 KPI 看板”。安装方式见积木 Skills 官网。

数据集类型覆盖 SQL、API、JSON、WebSocket,兼容主流及国产信创数据库。设计器是类 Word 的拖拽模式,大屏、仪表盘、门户、移动端一次开发多端适配。
升级前的检查清单
把三模块版本对齐,确认 Spring Boot 大版本与 starter 坐标匹配,梳理指向内网的 API 数据集确认出站校验不会误伤,然后按匿名分享挂机复测、多窗口 WebSocket 推送复测、HTTPS 反代白屏复测三条线走一遍。这套流程跑完,v2.5.6 的安全收益才算真正实现。
ID:8003