web-dev-qa-db-ja.com

X-Content-Type-OptionsをTomcat構成に追加する方法

私のクライアントは、私のWebアプリのWebアプリの脆弱性を修正することを望んでいます。以下は、私のWebアプリの脆弱性に関するメッセージです。

Anti-MIME-SniffingヘッダーX-Content-Type-Optionsが「nosniff」に設定されていませんでした

このチェックは、Internet Explorer8とGoogleChromeに固有のものです。 Content-Typeヘッダーが不明な場合は、各ページで> Content-TypeヘッダーとX-CONTENT-TYPE-OPTIONSが設定されていることを確認してください

私はすでにこの問題の解決策を見つけましたが、Tomcat構成から解決策を探しています。これを実現するためにTomcat構成を変更することは可能ですか?

何か考えを教えてください。

7
happenask

次の手順でTomcatレベルで達成できると思います。

  • フィルタを作成し、jarにパッケージ化し、jarを$CATALINA_BASE/lib/に入れます。
  • フィルタ定義を$CATALINA_BASE/conf/web.xmlに追加します
6
potato

Tomcat 8を使用している場合、それは本当に簡単です-次の2つのセクションをweb.xmlに追加します。

<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>

サーバーの応答に「nosniff」とX-Frame-Optionsが含まれるようになりました:デフォルトではDENY

Server response

詳細: Tomcat 8フィルター構成

14
Ed Norris

サンプルフィルタークラスコード。

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
RonanOD

エド・ノリスの答えを補足するため。このようなフィルターマペンを使用するだけなら

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

すべてをターゲットにするために、jpg、pngなどのメディアリソースをロードするときにいくつかの不要なヘッダー(x-xss-protectionおよびX-Frame-Options)があります( https://sonarwhal.com)によると リンティングツール)。

これらを回避するために、次のような2つのフィルターとマッピングを作成しました。

<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>

そして、これらの拡張機能のそれぞれについてhttpHeaderSecurityNoXにヒットするさらにいくつかのフィルターマッピング:png、gif、js、css、ico(おそらく、単一のurlパターンに含めることができますか?)

Init-param

xssProtectionEnabled

tomcat web.xmlコメントにはリストされていませんが、ここで見つかりました

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

3
Vering