Posted on 2007-08-28 18:47
匪客 閱讀(2909)
評論(1) 編輯 收藏 所屬分類:
開發技術
近日公司同事在開發一段程序完成后在網站上面測試,無意中發現訪問網站路徑http://www.xxx.com/WEB-INF/這樣的地址后會列出該目錄下的所有文件,點擊文件WEB-INF下的web.xml可以查看和下載,這樣一來,配置的數據庫連接信息就都暴露了,存在重大的安全隱患。
該網站是采用Apache2.0 + Tomcat5.5配置的,*.jsp和*.do文件交由TOMCAT處理,其他文件由Apache處理,在Apache的配置文件httpd.conf中,配置了DocumentRoot與Tomcat的webapps/ROOT為相同目錄,經過測試發現,如果訪問地址不是*.jsp或*.do,并且在目錄下沒有默認歡迎文件index.html等,就會顯示文件目錄列表,這樣以來Tomcat的webapps/ROOT/WEB-INF下的所有文件都可以下載下來,完全沒有安全可言。
經過查閱資料,可以有以下方式解決這個問題:一個是禁止目錄索引功能,一個是禁止訪問WEB-INF目錄下文件的功能,都需要修改apache的配置文件httpd.conf:
?
1、禁止目錄索引功能,查找如下段字符串,刪除其中的“Indexes”即可,注意實際字符串可能有所區別:
?
??????????? DocumentRoot "/usr/local/tomcat5/webapps/ROOT"
??????????? <Directory "/usr/local/tomcat/webapps/ROOT">
??????????????? #
??????????????? Options Indexes FollowSymLinks Includes
??????????????? #
??????????????? AllowOverride None
??????????????? #
??????????????? Order allow,deny
??????????????? Allow from all
??????????? </Directory>
?
2、禁止訪問WEB-INF目錄下文件的功能,在文件尾部加入如下字符串即可:
?
??????????? <Location ~ "/WEB-INF/">?
????????????? AllowOverride None
????????????? Deny from all
??????????? </Location>
其中“~ "/WEB-INF/"”是通配符設置,即所有的路徑中包含/WEB-INF/都不允許訪問。
上面是對Apache的配置,Tomcat也是需要調整的,修改tomcat目錄/conf/web.xml文件,如下,將listings改為true:
??????????? <servlet>
????????????? <servlet-name>default</servlet-name>
????????????? <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
????????????? <init-param>
??????????????? <param-name>debug</param-name>
??????????????? <param-value>0</param-value>
????????????? </init-param>
????????????? <init-param>
??????????????? <param-name>listings</param-name>
??????????????? <param-value>false</param-value>
????????????? </init-param>
????????????? <load-on-startup>1</load-on-startup>
??????????? </servlet>
特此記錄下來,供大家參考。
?