Soluzione 1:
L'accesso ai file di Tomcat è controllato dalla sezione dei vincoli di sicurezza di WEB-INF/web.xml.
Puoi bloccare conf
in questo modo:
<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>
Se stai usando apache per servire contenuti statici, questo non funzionerà poiché apache servirà i file conf prima che Tomcat ottenga l'URL. In questi casi, dovresti risolvere questo problema tramite i file di configurazione http di Apache.
Soluzione 2:
Ciao a tutti i SysAdmin e IT Workers in questo post. Grazie per le tue risposte. Molte delle risposte alle mie domande erano accettabili, ma questa era la più adatta al nostro ambiente di produzione.
Ok. Per bloccare una directory o un file all'interno di un host virtuale in server.xml devi solo aggiungere il seguente codice al server.xml nella directory tomcat/conf.
Prima:
<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>
Dopo:
<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>
Quindi la risposta alla domanda è aggiungere le seguenti righe:
<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>
Soluzione 3:
Perché non memorizzarlo al di fuori della struttura della tua directory web? Non mettiamo mai nulla sotto /var/www/html/ che non vorremmo che un utente scoprisse.
Soluzione 4:
Parola di consiglio. Dopo aver corretto i permessi. Cambia tutte le password e assicurati che non ci sia una cache di Google.
Soluzione 5:
Normalmente le informazioni di configurazione (come le informazioni di connessione al database, ...) sono memorizzate nei file nella cartella WEB-INF del file WAR distribuito a Tomcat. I file in WEB-INF non sono accessibili ai client.