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。