跳到主要内容

平台权限变更

v1.9.6+ 规则变化

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

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

v1.9.2+ 规则变化

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

v1.7.7+ 规则变化

  1. lowCodeMode设置为prodprodsf时,系统将禁止向内网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。