druid是国内及公司内部最经常使用的数据库链接池配置管理工具;其内置监控页面,用于拦截sql及实时监控链接池/sql信息,该页面在原生的druid包中默认为禁用,但其用于适配springboot的druid-spring-boot-starter包,默认打开该监控页面(http://ip:port/druid/index.html) ,打开后存在以下风险:html
因为druid监控页面地址是固定的,容易被猜,监控页面默认没有任何安全措施,容易暴露项目信息,如:数据库域名地址、库名、表名、查询的sql及url等,若是druid有漏洞,甚至可能被攻击。git
泄漏DB域名、使用用户及库名: github
泄漏SQL信息: web
泄漏URL信息: spring
监控页面中的多个tab页含阿里云广告,且power by链接到做者我的域名,估计没续费,已被澳门赌场站点抢占,国内该类广告是违法的,以下图: sql
判断项目是否添加druid监控页面的方法:是否能打开druid监控页面(http://ip:port/druid/index.html) ,能打开,则已添加;反之,未添加。数据库
关闭监控页面及相关的stat、web-stat监控项,在springboot的application-${env}.yml中,建议添加或调整为以下配置:安全
spring: datasource: druid: filter: stat: enabled: false wall: enabled: false slf4j: enabled: false log4j2: enabled: false log4j: enabled: false commons-log: enabled: false stat-view-servlet: enabled: false # 如启用,建议:配置用户名&密码并指定容许访问的IP,确保信息[数据库地址/用户名/表结构等]不泄漏,安全无小事 login-username: athm@dealer login-password: l5vTEgeUL0rQQ3CU allow: 127.0.0.1 web-stat-filter: enabled: false session-stat-enable: false
特别说明: druid项目代码贡献人数众多,无统一管理,接近40%的issue无人处理,存在代码管理混乱等问题,druid-spring-boot-starter中启用监控页面的功能为一个非主要维护者提交的代码,竟被采纳,因此咱们建议对druid-spring-boot-starter的配置项尽可能保守:即便默认关闭的配置,咱们也手工指明,避免后续版本默认调整为启用。springboot
上述配置信息,详细说明:session
spring: datasource: druid: 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: athm@dealer #配置监控页面登陆用户名,启用监控页面后才可用,建议业务方,从新定义,别使用咱们的给定值 login-password: l5vTEgeUL0rQQ3CU #配置监控页面登陆密码,启用监控页面后才可用,建议业务方,从新定义,别使用咱们的给定值 allow: 127.0.0.1 #配置容许访问监控页面的IP地址 web-stat-filter: enabled: false #默认值为true,统计web关联的监控信息如session/url等,建议修改成false session-stat-enable: false #该功能模块代码不完善,特定场景下会诱发异常,非特别需求,建议修改成false
其余建议: 某些特定场景,如线上问题分析、故障复盘等,须要打开监控页面,则建议指定登陆用户名&密码及容许访问的IP,确保信息不外泄。
默认不启用druid监控页面,若是如今已启用,建议删除;若有特殊需求须要打开监控页面,建议给监控页面配置用户名、密码或容许访问的IP,确保信息不外泄。
非springboot项目配置druid监控页面的方法
打开监控页面(http://ip:port/druid/index.html)报404。