應用開發、部署用的jetty容器。安全監測發現有目錄遍歷的問題。即瀏覽器中輸入目錄地址就可以訪問服務器上的文件,如下:
這是非常不安全的。解決該問題也很簡單,比照網上Tomcat的解決方案,jetty也有defaultServlet配置的解決方案。在web.xml中添加配置即可,如下:
<servlet>
<servlet-name>default</servlet-name>
<!-- <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> -->
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>dirAllowed</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
其中dirAllowed即是對目錄遍歷的配置,true爲允許,false爲禁止。
需要注意的是,在jetty低版本中,可能會報錯org.eclipse.jetty.servlet.DefaultServlet找不到classnotfound。這是因爲低版本的jetty或者是jetty自己對default進行管理,高本版中才將其給了eclipse進行管理。此時將org.eclipse.jetty.servlet.DefaultServlet改爲org.mortbay.jetty.servlet.DefaultServlet即可。
修改以後,再次訪問,訪問被拒,如下:
以上記錄完畢。