跳到主要内容

平台权限变更

v2.5.4+ 规则变化​

内网/保留地址(SSRF防护)校验规则调整:

  1. 新增独立开关 apiDsIpCheck,默认 false(不校验,兼容自建/内网部署下报表调用同网络内部API的常见场景)。
  2. 该校验不再与 lowCodeMode 绑定——v1.7.7+那条"lowCodeMode设置为prod时才校验内网地址"的规则作废,改为只看 apiDsIpCheck 是否为 true。
  3. 校验范围新增覆盖:IPv6(::1、fe80::/10、fc00::/7)、云厂商元数据地址段(169.254.0.0/16),以及 apiDsIpWhite 白名单新增支持配置域名(原来只支持字面量IP和CIDR网段,非字面量IP的条目会按域名精确匹配处理)。

对外暴露的SaaS/多租户部署建议设置 apiDsIpCheck: true 并按需配置 apiDsIpWhite;自建/内网单租户部署默认不受影响。

v1.9.6+ 规则变化​

新增sqlInjectionLevel,用来自定义设置系统的sql注入检查级别:

  • strict: 严格检查级别(默认)
  • basic: 简单检查级别
  • none: 不检查

v1.9.2+ 规则变化​

  1. dataSourceSafe设置为true时,不允许创建SQLite数据源。

v1.7.7+ 规则变化​

  1. lowCodeMode设置为prod或prodsf时,系统将禁止向内网ip地址发送网络请求。

  2. 只有在apiDsIpWhite中设置的ip的才可以访问。

    2.1. apiDsIpWhite接收一个列表数据。

    2.2. 白名单设置方式:第一种: 直接设置具体ip(eg. 192.168.1.1)第二种: 通过子网设置网段(eg. 10.22.1.0/24)。

影响范围

  • api数据集-数据解析。
  • api数据集报表预览。
  • 动态接口数据单元格。
  • api字典

建议:为确保生产环境安全,建议不要在积木报表中通过内网ip调用内网服务。

v1.6.2+ 规则变化​

  1. 多租户的配置方式变更为:saasMode
  2. 新增低代码开发模式 lowCodeMode:prod,完全禁止在线报表设计能力,彻底避免被攻击
  3. 默认报表预览地址必须带token,只能通过报表分享连接给他们访问报表

积木报表,通过几个维度保障安全​

  1. 增加低代码开发模式 配置 jeecg.jmreport.firewall.lowCodeMode: prod 发布模式下会关闭所有报表设计相关接口,普通用户只能访问报表不能做任何报表修改,彻底解决被攻击风险 为了便于线上报表临时维护,用户是“admin”,或者拥有角色 "admin"、"lowdeveloper" 的用户,还可以设计报表

  2. 敏感接口,增加角色权限控制 容易被攻击的敏感接口默认加了角色权限控制,只有拥有角色 "admin","lowdeveloper","dbadeveloper" 的用户,可以访问。 接口清单如下: a. 数据预览接口 /jmreport/loadTableData b. 测试数据源连接是否正确接口 /jmreport/testConnection c. 解析SQL接口 /jmreport/queryFieldBySql

  3. 增加数据隔离配置 参数 jmreport.saasMode: created 线上发布请按照创建人或者租户实现数据隔离,保证他人数据安全 created: 按照创建人隔离、tenant: 按照租户隔离

  4. 增加数据源安全配置 参数 jeecg.jmreport.firewall.dataSourceSafe: true 开启数据源安全后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库

  5. 重写了sql参数拼接的写法,全部换成占位符方式,防止被攻入的可能

  6. 进一步加强了sql注入检查算法,通过深度解析SQL,检查是否存在攻击函数等

特殊场景​

如果某个人可以在测试环境下设计报表,但是不能在发布环境下设计报表,只分配角色dbadeveloper即可,当然测试环境下需要把lowCodeMode改成dev。