针对的未授权访问漏洞,这里提供两种主流的解决方案:
- 方案一:完全关闭监控页面:最简单直接的修复方式,可彻底消除此漏洞带来的安全风险。
- 方案二:保留功能,配置访问密码:在保留监控能力的同时增加访问控制,这是更推荐的做法。
方案一:完全关闭监控页面
如果你的业务系统对监控功能没有持续需求,最安全的方法是直接将其关闭。你需要在应用的配置文件中将spring.datasource.druid.stat-view-servlet.enabled参数设置为false。
- application.yml格式
spring:datasource:druid:stat-view-servlet:enabled:false - application.properties格式
spring.datasource.druid.stat-view-servlet.enabled=false
配置修改完成后,重启业务系统。再次访问该Druid监控页面将无法打开。
方案二:保留监控功能,配置访问密码(推荐)
这种方式可以保留Druid强大的监控能力,同时通过增加用户名/密码认证和IP白名单来确保安全。
1. 仅开启登录认证
在配置文件中启用stat-view-servlet,并设置login-username和login-password即可。
- application.yml格式
spring:datasource:druid:stat-view-servlet:enabled:true# 启用监控页面login-username:your_admin# 设置登录用户名login-password:your_password# 设置登录密码reset-enable:false# 建议禁用HTML页面的“Reset All”功能 - application.properties格式
spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.login-username=your_admin spring.datasource.druid.stat-view-servlet.login-password=your_password spring.datasource.druid.stat-view-servlet.reset-enable=false
配置完成后,访问监控页面时会要求输入用户名和密码。
2. 高级防御:增加IP白名单
如果有固定的运维管理IP,可以添加allow配置,限制只有特定IP才能访问。黑名单deny规则会优先于白名单allow。
spring:datasource:druid:stat-view-servlet:# ... (其他配置,如login-username等)allow:127.0.0.1,10.0.0.1# 允许访问的IP,多个用英文逗号分隔# deny: 192.168.1.100 # 拒绝访问的IP注意:未配置
allow或配置为空时,默认允许所有IP访问。
验证修复效果
无论采用哪种方案,完成配置并重启业务系统后,都需要进行验证:
- 再次访问`
- 如果页面无法访问或提示输入用户名密码,则说明修复成功,漏洞已关闭。