平台权限变更
v1.9.6+ 规则变化
新增sqlInjectionLevel
,用来自定义设置系统的sql注入检查级别:
strict
: 严格检查级别(默认)basic
: 简单检查级别none
: 不检查
v1.9.2+ 规则变化
dataSourceSafe
设置为true
时,不允许创建SQLite
数据源。
v1.7.7+ 规则变化
-
lowCodeMode
设置为prod
或prodsf
时,系统将禁止向内网ip地址发送网络请求。 -
只有在
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+ 规则变化
- 多租户的配置方式变更为:
saasMode
- 新增低代码开发模式
lowCodeMode:prod
,完全禁止在线报表设计能力,彻底避免被攻击 - 默认报表预览地址必须带token,只能通过报表分享连接给他们访问报表
积木报表,通过几个维度保障安全
-
增加低代码开发模式 配置
jeecg.jmreport.firewall.lowCodeMode: prod
发布模式下会关闭所有报表设计相关接口,普通用户只能访问报表不能做任何报表修改,彻底解决被攻击风险 为了便于线上报表临时维护,用户是“admin”,或者拥有角色 "admin"、"lowdeveloper" 的用户,还可以设计报表 -
敏感接口,增加角色权限控制 容易被攻击的敏感接口默认加了角色权限控制,只有拥有角色 "admin","lowdeveloper","dbadeveloper" 的用户,可以访问。 接口清单如下: a. 数据预览接口
/jmreport/loadTableData
b. 测试数据源连接是否正确接口/jmreport/testConnection
c. 解析SQL接口/jmreport/queryFieldBySql
-
增加数据隔离配置 参数
jmreport.saasMode: created
线上发布请按照创建人或者租户实现数据隔离,保证他人数据安全created
: 按照创建人隔离、tenant
: 按照租户隔离 -
增加数据源安全配置 参数
jeecg.jmreport.firewall.dataSourceSafe: true
开启数据源安全后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库 -
重写了sql参数拼接的写法,全部换成占位符方式,防止被攻入的可能
-
进一步加强了sql注入检查算法,通过深度解析SQL,检查是否存在攻击函数等
特殊场景
如果某个人可以在测试环境下设计报表,但是不能在发布环境下设计报表,只分配角色dbadeveloper
即可,当然测试环境下需要把lowCodeMode
改成dev。