2014-06-12 16 views
6

Mein Klient mich wollen beheben Web App Verwundbarkeit von My Web App unten Nachricht über Verwundbarkeit von My Web AppWie X-Content-Type-Optionen tomcat Konfiguration

Die Anti-MIME- hinzufügen Sniffing-Header X-Content-Type-Optionen wurde nicht auf 'nosniff' festgelegt

Diese Überprüfung gilt nur für Internet Explorer 8 und Google Chrome. Stellen Sie sicher, jede Seite setzt> Content-Type-Header und die X-CONTENT-TYPE-OPTIONS, wenn die Content-Type-Header unbekannt sind

Obwohl ich schon einige Lösung für dieses Problem gefunden, ich bin auf der Suche nach Lösung von tomcat Aufbau. Ist es möglich, Änderungen an der Tomcat-Konfiguration vorzunehmen, um dies zu erreichen?

bitte geben Sie mir eine Idee.

+0

nicht sicher, dass Sie Tomcat konfigurieren können, dies zu tun, aber man konnte einen 'Filter' verwenden, um auf alle Antworten diesen Header zu setzen. – DaveH

Antwort

5

Ich glaube, Sie es auf Tomcat Ebene durch folgende Schritte erreicht werden können:

  • Ihre Filter erstellen, Paket, um es in Glas, legt Glas in $CATALINA_BASE/lib/
  • hinzufügen Filterdefinition in $CATALINA_BASE/conf/web.xml
+0

Können Sie das genauer erklären? – happenask

+0

Sicher, was Sie tun, ist eine benutzerdefinierte Implementierung von 'javax.servlet.Filter' (nennen wir es' org.happenask.filter.ContentTypeOptionsFilter'), packen Sie es in Jar mit Maven oder was auch immer, lassen Sie es in '$ CATALINA_BASE/lib/'und danach definiere es in' web.xml' als Filter mit dem gewünschten Namen/Mapping und setze die Filterklasse auf ' org.happenask.filter.ContentTypeOptionsFilter' – potato

4

Beispiel Filter Klassencode.

public class SampleResponseFilter implements Filter { 

    @Override 
    public void destroy() { } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
     throws IOException, ServletException 
    { 
    HttpServletRequest req = (HttpServletRequest) request; 
    HttpServletResponse res = (HttpServletResponse) response; 
    // Protection against Type 1 Reflected XSS attacks 
    res.addHeader("X-XSS-Protection", "1; mode=block"); 
    // Disabling browsers to perform risky mime sniffing 
    res.addHeader("X-Content-Type-Options", "nosniff"); 
    chain.doFilter(req,res); 
    } 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { } 
} 
6

Wenn Sie mit Tomcat 8, es ist wirklich einfach - diese beiden Abschnitte zu Ihrem web.xml hinzu:

<filter> 
    <filter-name>HeaderSecurityFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>HeaderSecurityFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Die Antwort des Servers jetzt 'NOSNIFF' hat und X-Frame-Options Standardmäßig DENY

Server response

Weitere Einzelheiten: Tomcat 8 Filter Configuration

+0

This Antwort funktionierte für mich wie ein Zauber – amir

0

Ergänzend zur Antwort von Ed Noriss. Wenn ich nur einen Filter mappen wie diese

verwenden
<filter-mapping> 
     <filter-name>HeaderSecurityFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

alles zielen, wird es einige unnötige Header (x-XSS-Schutz und X-Frame-Options) beim Laden von Medien-Ressourcen wie jpg, png usw. . (nach https://sonarwhal.com Linting Tool).

Um Thesen zu vermeiden ich zwei Filter und Zuordnungen wie folgt erstellt haben:

<filter> 
    <filter-name>httpHeaderSecurity</filter-name> 
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
    <async-supported>true</async-supported> 
</filter> 

<filter> 
    <filter-name>httpHeaderSecurityNoX</filter-name> 
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
<init-param> 
     <param-name>antiClickJackingEnabled</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>xssProtectionEnabled</param-name> 
     <param-value>false</param-value> 
    </init-param> 

    <async-supported>true</async-supported> 
</filter> 

...

<filter-mapping> 
    <filter-name>httpHeaderSecurity</filter-name> 
    <url-pattern>*.jsp</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>httpHeaderSecurityNoX</filter-name> 
    <url-pattern>*.jpg</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>httpHeaderSecurityNoX</filter-name> 
    <url-pattern>*.png</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

und mehrere Filterzuordnungen httpHeaderSecurityNoX ​​für jede dieser Erweiterungen schlagen: png, gif, js, css, ico (vielleicht könnte es in einem einzigen url-Muster enthalten sein?)

Der init-param

xssProtectionEnabled 

wurde nicht im Tomcat-Web aufgelistet.XML-Kommentare, fand aber, es hier

https://vk4u.wordpress.com/2017/03/02/how-to-enable-security-filters-in-tomcat/

Verwandte Themen