Geo*_*Geo 11 linux tomcat java
我们有几个 tomcat 服务器,我们刚刚发现一些我们不希望公开访问这些文件的文件。举例说明:
假设我们有一个文件夹 /var/www/html/ 我们正在通过 tomcat 发布,但我们不想公开 /var/www/html/conf/dbinfo.txt。这时候人们可以去www.thissite.com/conf/dbinfo.txt,他们可以看到东西。我希望能够阻止它,因此不会显示它,但它允许 tomcat 本身读取它。
任何帮助表示赞赏。
Tomcat 的文件访问由 WEB-INF/web.xml 的安全约束部分控制。
您可以通过conf
这种方式阻止:
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTP-Protected-Resource-1</web-resource-name>
<description>Description here</description>
<url-pattern>/conf/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>NOSOUPFORYOU</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>DEFAULT</auth-method>
<realm-name>NOACCESSFORANYONE</realm-name>
</login-config>
<security-role>
<role-name>NOSOUPFORYOU</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)
如果您使用 apache 来提供静态内容,这将不起作用,因为 apache 将在 tomcat 获取 URL 之前提供 conf 文件。在这些情况下,您需要通过 apache 的 http 配置文件来解决这个问题。
向本文中的所有系统管理员和 IT 工作者问好。感谢您的回复。对我的问题的许多答复都是可以接受的,但这个答复最适合我们的生产环境。
好的。要在 server.xml 中阻止虚拟主机中的目录或文件,您只需将以下代码添加到 tomcat/conf 目录中的 server.xml。
前:
<Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
<Context path="" docBase="./customer" />
<Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
directory="weblogs/customer"
prefix="www_customer_com_"
suffix=".txt"
pattern="combined"
resolappHosts="false" />
</Host>
Run Code Online (Sandbox Code Playgroud)
后:
<Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
<Context path="" docBase="./customer" />
<Context path="/app/xv/~customer/etc" docBase="" >
<Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
</Context>
<Context path="/etc" docBase="" >
<Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
</Context>
<Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
directory="weblogs/customer"
prefix="www_customer_com_"
suffix=".txt"
pattern="combined"
resolappHosts="false" />
</Host>
Run Code Online (Sandbox Code Playgroud)
所以问题的答案是添加以下几行:
<Context path="/app/xv/~customer/etc" docBase="" >
<Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
</Context>
<Context path="/etc" docBase="" >
<Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
</Context>
Run Code Online (Sandbox Code Playgroud)