Řešení 1:
Přístup k souborům Tomcat je řízen sekcí bezpečnostních omezení WEB-INF/web.xml.
Můžete zablokovat conf
tímto způsobem:
<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>
Pokud používáte apache k poskytování statického obsahu, nebude to fungovat, protože apache obslouží soubory conf dříve, než tomcat získá adresu URL. V těchto případech byste to museli vyřešit pomocí http konfiguračních souborů Apache.
Řešení 2:
Zdravím všechny SysAdmin a IT pracovníky v tomto příspěvku. Děkuji za vaše odpovědi. Mnoho odpovědí na mé otázky bylo přijatelných, ale tato byla pro naše produkční prostředí nejvhodnější.
OK. Chcete-li zablokovat adresář nebo soubor ve virtuálním hostiteli v server.xml, stačí přidat následující kód do souboru server.xml v adresáři tomcat/conf.
Před:
<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>
Po:
<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>
Takže odpověď na otázku je přidat následující řádky:
<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>
Řešení 3:
Proč jej neukládat mimo strukturu webových adresářů? Do /var/www/html/ nikdy nevkládáme nic, co bychom nechtěli, aby uživatel objevil.
Řešení 4:
Slovo rady. Po opravě oprávnění. Změňte všechna hesla a ujistěte se, že neexistuje mezipaměť google.
Řešení 5:
Normálně jsou konfigurační informace (jako jsou informace o připojení k databázi, ...) uloženy v souborech ve složce WEB-INF souboru WAR nasazeného na Tomcat. Soubory pod WEB-INF nejsou klientům přístupné.