第一章 问题描述

在数据查询时,如果有用户信息泄露,登陆后可以通过sql查询系统表,甚至修改数据库系统表,这样会给系统维护带来极大风险,所以需要在服务端限制数据查询时查询系统表

第二章 使用步骤

1 修改配置文件

在WEB-INF\lib下找到unieap-report-datasource-manager-x.x.jar,jar包中有一个ReportDatasourceType.yaml配置文件,需要修改文件中不同种类数据库的system_catalogs项,在报表运行时,如果有符合数据库种类下的查询涉及到system_catalogs中的表,就会抛出异常,禁止查询。

这里以mysql数据库为例,system_catalogs中有information_schema, performance_schema, mysql, sys几个表名,如果查询时涉及到这几个表就会抛出异常。

- id: mysql
  name: MySQL
  kind: rdb
  sort: 11
  img: img/datasource/MySQL.jpg
  property:
    default_port: 3306
    local: 0
    use_catalog: true
    system_catalogs: [information_schema, performance_schema, mysql, sys]
  poolproperty:
    maxPoolSize: 15
    maxIdleTime: 7200
    checkoutTimeout: 0
    minPoolSize: 3
    idleConnectionTestPeriod: 0
    acquireIncrement: 3
    maxStatements: 0
    testConnectionOnCheckin: false
    testConnectionOnCheckout: false
    maxStatementsPerConnection: 0
  disable: false

如下图所示,在数据集中解析和查询时均会报错。

1

2

results matching ""

    No results matching ""

    results matching ""

      No results matching ""