2

我们的产品存在严重的安全问题,它运行在 apache tomcat 服务器上,监听端口 80 和 443。这些端口上传入的 HTTP/HTTPS 数据包的路由是由我们的产品类配置的,无法确保每个请求的 URL 引用一个文件,它位于服务器的 Web 根目录中,并且属于允许提供的类型。

特别是,与 url 中的“/error/*”匹配的数据包被配置为使用“docroot”文件夹作为提供文件的文档根目录。因此,%5C也可以访问和下载使用 URL 编码的反斜杠从 /error/ (即 docroot)目录中遍历出来的路径。例如,远程用户可以提供一个类似的 url –</p>

    https://MyDomain/error/..%5c..%5csettings.properties  

访问与 docroot 处于同一级别的远程文件 settings.properties。我们正试图通过防火墙规则和网络分段来克服这个问题。但是tomcat中有没有可以用来防止远程用户访问项目根文件夹外的文件的设置。那将非常有用。

4

2 回答 2

1

您可以使用机器人限制对错误文件夹的访问。您还可以将条目映射到 error/* 到重定向页面。

对所有请求和响应进行编码应该可以解决 / -> %5c 问题

于 2012-12-11T08:08:49.270 回答
1

如果要限制对某些文件的直接 URL 访问,请将它们放在 WEB-INF 目录下。

从这里引用(注意:以下 URL 当前不可用):
http ://www.servletworld.com/servlet-tutorials/web-application-directory-structure.html

根目录包含一个名为 WEB-INF 的目录。根目录下除 WEB-INF 目录外的所有内容都是公开的,可以通过浏览器的 URL 访问。

WEB-INF 目录是 Web 应用程序的私有区域,WEB-INF 目录下的任何文件都不能通过指定 URL 直接从浏览器访问,http://somesite/WEB-INF/someresource.html. Web 容器不会提供此目录的内容。但是,应用程序中的类可以访问 WEB-INF 目录的内容。因此,如果您不希望从 Web 浏览器直接访问 JSP 或 HTML 文档等任何资源,则应将其放在 WEB-INF 目录下。

于 2012-12-20T23:53:39.790 回答