【问题标题】:Restrict file access in Tomcat限制 Tomcat 中的文件访问
【发布时间】:2012-11-28 18:06:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 即使有一些过滤选项我们可以阻止对文件路径以外的 *.txt、*.properties 等文件类型的访问,即使这样也会很有帮助。

标签: tomcat web-applications servlets security file-security


【解决方案1】:

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

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

根目录包含一个名为WEB-INF 的目录。下的任何东西 WEB-INF目录以外的根目录是公开的 可用,并且可以从浏览器通过 URL 访问。

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

【讨论】:

  • @Gawey “servletworld.com”网站似乎不再托管。
【解决方案2】:

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

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

【讨论】:

  • 您好,感谢您的帮助。但是请您详细说明一下。
  • 您好 Mohammed..如果您能详细解释一下,我将不胜感激。
  • 您好,我在 webapps/ROOT 文件夹中创建了一个名为 robots.txt 的文本文件,其中包含以下内容 -- User-agent: * Disallow: /*.txt
  • 但仍然可以访问和下载 .txt 文件。我们将不胜感激您的帮助。
  • 有没有人可以帮助我。任何指导将不胜感激。
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 2011-07-28
  • 2011-06-18
  • 1970-01-01
相关资源
最近更新 更多