Skip to content

4.2.0 wall过滤器配置multi-statement-allow: true不起作用 #640

Open
@yupeishan

Description

@yupeishan

Enviroment

JDK Version(required): 1.8

SpringBoot Version(required): 2.5

dynamic-datasource-spring-boot-starter Version(required): 4.2

druid Version(optional): 1.2.16

Describe what happened

您好,请问wall过滤器中如何允许多重语句的执行,也就是multi-statement-allow 我试过在spring.datasource.druid.filter.wall下面配置,或者在spring.datasource.dynamic.druid.wall下面配置,以及都进行配置,均不起作用,执行多重语句时仍然出现报错,
Cause: java.sql.SQLException: sql injection violation, dbType mysql, druid-version 1.2.16, multi-statement not allow
jdbc连接中也配置了allowMultiQueries=true

yml

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
            stat-view-servlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username: admin
                login-password: admin123
                reset-enable: true
            web-stat-filter:
                enabled: true
                # 排除资源
                exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
                # 开启session统计
                session-stat-enable: true
                # session统计的最大个数
                session-stat-max-count: 100
                # 过滤路径
                url-pattern: /*
            filter:
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 5000
                    merge-sql: true
                wall:
                    enabled: true
                    config:
                        multi-statement-allow: true
                        drop-table-allow: false
        dynamic:
            # 主数据源
            primary: master
            # 严格模式
            strict: false
            # 懒加载
            lazy: true
            druid:
                # 初始连接数
                initialSize: 5
                # 最小连接池数量
                minIdle: 10
                # 最大连接池数量
                maxActive: 20
                # 配置获取连接等待超时的时间
                maxWait: 6000
                # 配置连接超时时间
                connectTimeout: 30000
                # 配置网络超时时间
                socketTimeout: 60000
                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
                timeBetweenEvictionRunsMillis: 2000
                # 配置一个连接在池中最小生存的时间,单位是毫秒
                minEvictableIdleTimeMillis: 600000
                # 配置一个连接在池中最大生存的时间,单位是毫秒
                maxEvictableIdleTimeMillis: 900000
                testWhileIdle: true
                testOnBorrow: false
                testOnReturn: false
                filters: stat,wall,slf4j
                wall:
                    enabled: true
                    config:
                        multi-statement-allow: true
                        drop-table-allow: false
            datasource:
                master:
                    driverClassName: com.mysql.cj.jdbc.Driver
                    url: jdbc:mysql://${AMS_HOST:ams-host}:${AMS_PORT:3306}/newlight?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
                    username: ${MYSQL_USER:test}
                    password: ${MYSQL_PWD:test@123}
                    druid:
                        validation-query: select 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions