gpt4 book ai didi

java - 阻止从 JSP 访问 WEB-INF

转载 作者:行者123 更新时间:2023-12-01 10:12:57 24 4
gpt4 key购买 nike

我正在我们的一台服务器上处理一些安全警报,其中“文件下载”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 文件本身访问它的信息。

谢谢

汤姆...

最佳答案

你说JSP页面正在使用java.io.FileInputStream来读取文件。这是一个标准的 Java 类,它不知道它是在 servlet 容器内运行的事实。

因此 java.io.FileInputStream 将能够访问运行 Servlet 容器 (JVM) 的用户进程可以访问的任何文件。您无法在 servlet 容器中配置任何内容来防止这种情况发生。

您可能想确保无法访问文件系统中与 servlet 容器完全无关的其他区域中的文件,例如例如“/etc/passwd”。

假设您在 Linux 上运行,此 URL 的作用是:

http://domain.com/filedownload.jsp?filename=passwd&filepath=/etc/

如果它确实返回了文件,那么问题就更大了!也许创建警报的安全软件(不确定您使用的是什么?)会阻止下载。如果没有,操作系统文件权限可以提供帮助,只要 Web 服务器不是在 root 或其他特权帐户下运行,但这只是短期的紧急修复。

所以不,在常见的 servlet 容器中没有标准化的方法来防止这种情况发生,是的,它确实需要完全由代码开发人员管理。

使用 java.io.FileInputStream 时,JSP 页面的编写者/维护者有责任确保仅访问有效路径。

关于java - 阻止从 JSP 访问 WEB-INF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36047890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com