我正在我们的一台服务器上处理一些安全警报,据此“文件下载”JSP 文件能够让用户下载 Web 应用程序的 WEB-INF 内容(位于站点的根文件夹中)。这是一个非常简单的文件,写于 2007 年,它使用 java.io.FileInputStream 对未经处理的输入返回一个文件给用户。
该警报实际上声称这是一个目录遍历问题,这是一种方式,因为以下 URI 将为用户下载 web.xml:
http://domain.com/filedownload.jsp?filename=../../WEB-INF/web.xml&filepath=some/directory/
现在显然应该通过对用户输入进行清理来纠正“目录遍历”部分(这个脚本还没有这样做)。但是,以下 URI 也将 web.xml 传递给用户,但目录遍历的输入清理在这里没有帮助,除非清理检查“WEB-INF”和其他“非法”目录......
http://domain.com/filedownload.jsp?filename=web.xml&filepath=WEB-INF/
是否有一种标准化的方法可以在常见的 servlet 容器中防止这种情况发生,或者这是否需要完全由代码的开发人员管理?我注意到 Java 'normalize()' 函数不会从用户输入中删除该目录。
我试图为此寻找答案,但我能找到的只是关于直接阻止“服务”WEB-INF 的信息,但没有关于阻止从 JSP 文件本身访问它的信息。
谢谢,
汤姆...