Druid关闭监控页面关闭不了

本文详细介绍了使用阿里开源的Druid数据库连接池时遇到的安全漏洞问题。尽管已在yml文件中配置关闭监控页面并设置了访问限制,但仍无法阻止未授权访问。文章提供了具体的配置示例,并分享了最终通过替换为HikariCP来解决问题的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目里连接数据库使用了阿里开源的druid,结果被发现有安全漏洞,可以直接访问到druid的监控界面。但是奇怪的是,明明在yml文件里配置了关闭,同时allow的访问IP是127.0.0.1,还设置了用户名和密码,但是就是关不了,配置如下:

datasource:
    x-wr:
      driverClassName: com.mysql.jdbc.Driver
      name: mysql
      type: com.alibaba.druid.pool.DruidDataSource
      druid:
        #基本属性
        url: jdbc:mysql://
        username: x_rw
        password: 11111
        filter:
          stat:
            enabled: false #默认值为true,监控sql\慢sql等功能,我们建议修改为false,如果需要打开监控页面或者将慢sql输出到日志中,则修改为true。
          wall:
            enabled: false #默认值为false,sql防火墙,支持过滤sql,如禁止使用delete *等操作。
          slf4j:
            enabled: false #指定使用slf4j日志组件,支持选择将各种操作过程输出到日志中。
          log4j2:
            enabled: false #指定使用log4j2日志组件,支持选择将各种操作过程输出到日志中。
          log4j:
            enabled: false #指定使用log4j日志组件,支持选择将各种操作过程输出到日志中。
          commons-log:
            enabled: false #指定使用commons-log日志组件,支持选择将各种操作过程输出到日志中。
          stat-view-servlet:
            enabled: false #默认值为true,即打开监控页面,但存在泄漏信息的风险,所以修改为false
            login-username: hhhh #配置监控页面登录用户名,启用监控页面后才可用,建议业务方,重新定义,别使用我们的给定值
            login-password: ssdd #配置监控页面登录密码,启用监控页面后才可用,建议业务方,重新定义,别使用我们的给定值
            allow: 127.0.0.1 #配置允许访问监控页面的IP地址
          web-stat-filter:
            enabled: false #默认值为true,统计web关联的监控信息如session/url等,建议修改为false
            session-stat-enable: false #该功能模块代码不完善,特定场景下会诱发异常,非特别需求,建议修改为false
        #配置初始化大小/最小/最大
        initial-size: 1
        min-idle: 1
        max-active: 20
        #获取连接等待超时时间
        max-wait: 60000
        #间隔多久进行一次检测,检测需要关闭的空闲连接
        time-between-eviction-runs-millis: 60000
        #一个连接在池中最小生存的时间
        min-evictable-idle-time-millis: 300000
        validation-query: SELECT 'x'
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
        pool-prepared-statements: false
        max-pool-prepared-statement-per-connection-size: 20
        connection-init-sqls: set names utf8mb4
    x-ro:
      driverClassName: com.mysql.jdbc.Driver
      name: mysql
      type: com.alibaba.druid.pool.DruidDataSource
      druid:
        #基本属性
        url: jdbc:mysql://
        username: x_ro
        password: 00000
        filter:
          stat:
            enabled: false #默认值为true,监控sql\慢sql等功能,我们建议修改为false,如果需要打开监控页面或者将慢sql输出到日志中,则修改为true。
          wall:
            enabled: false #默认值为false,sql防火墙,支持过滤sql,如禁止使用delete *等操作。
          slf4j:
            enabled: false #指定使用slf4j日志组件,支持选择将各种操作过程输出到日志中。
          log4j2:
            enabled: false #指定使用log4j2日志组件,支持选择将各种操作过程输出到日志中。
          log4j:
            enabled: false #指定使用log4j日志组件,支持选择将各种操作过程输出到日志中。
          commons-log:
            enabled: false #指定使用commons-log日志组件,支持选择将各种操作过程输出到日志中。
          stat-view-servlet:
            enabled: false #默认值为true,即打开监控页面,但存在泄漏信息的风险,所以修改为false
            login-username: hhhh #配置监控页面登录用户名,启用监控页面后才可用,建议业务方,重新定义,别使用我们的给定值
            login-password: ssdd #配置监控页面登录密码,启用监控页面后才可用,建议业务方,重新定义,别使用我们的给定值
            allow: 127.0.0.1 #配置允许访问监控页面的IP地址
          web-stat-filter:
            enabled: false #默认值为true,统计web关联的监控信息如session/url等,建议修改为false
            session-stat-enable: false #该功能模块代码不完善,特定场景下会诱发异常,非特别需求,建议修改为false
        #配置初始化大小/最小/最大
        initial-size: 1
        min-idle: 1
        max-active: 20
        #获取连接等待超时时间
        max-wait: 60000
        #间隔多久进行一次检测,检测需要关闭的空闲连接
        time-between-eviction-runs-millis: 60000
        #一个连接在池中最小生存的时间
        min-evictable-idle-time-millis: 300000
        validation-query: SELECT 'x'
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
        pool-prepared-statements: false
        max-pool-prepared-statement-per-connection-size: 20
        connection-init-sqls: set names utf8mb4

试了各种方法都不行,于是上网查了一下,发现确实是个bug(可以参考这篇博客bug),于是解决方法就只能变成替换成hikari,怎么替换可以看我的博客hikari替换druid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值