Lösung 1:
Der Dateizugriff von Tomcat wird durch den Abschnitt für Sicherheitsbeschränkungen von WEB-INF/web.xml gesteuert.
Sie können conf
blockieren so:
<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>
Wenn Sie Apache verwenden, um statische Inhalte bereitzustellen, funktioniert dies nicht, da Apache die conf-Dateien bereitstellt, bevor Tomcat die URL erhält. In diesen Fällen müssten Sie dies über die HTTP-Konfigurationsdateien von Apache lösen.
Lösung 2:
Hallo an alle SysAdmin- und IT-Mitarbeiter in diesem Beitrag. Vielen Dank für Ihre Antworten. Viele der Antworten auf meine Fragen waren akzeptabel, aber diese war am besten für unsere Produktionsumgebung geeignet.
OK. Um ein Verzeichnis oder eine Datei innerhalb eines virtuellen Hosts in der server.xml zu blockieren, müssen Sie nur den folgenden Code zur server.xml im tomcat/conf-Verzeichnis hinzufügen.
Vorher:
<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>
Nachher:
<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>
Die Antwort auf die Frage lautet also, fügen Sie die folgenden Zeilen hinzu:
<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>
Lösung 3:
Warum speichern Sie es nicht außerhalb Ihrer Webverzeichnisstruktur? Wir legen niemals etwas unter /var/www/html/ ab, von dem wir nicht möchten, dass ein Benutzer es entdeckt.
Lösung 4:
Ein Rat. Nachdem Sie die Berechtigungen behoben haben. Ändern Sie alle Passwörter und stellen Sie sicher, dass es keinen Google-Cache davon gibt.
Lösung 5:
Normalerweise werden Konfigurationsinformationen (wie Datenbankverbindungsinformationen usw.) in Dateien im WEB-INF-Ordner der WAR-Datei gespeichert, die Tomcat bereitgestellt wird. Dateien unter WEB-INF sind für Clients nicht zugänglich.