web-dev-qa-db-ja.com

TomcatにHSTS機能を追加する

みなさんを信頼してください。

私のWebアプリケーションはTomcat6.0.43で実行され、フロントでApacheまたはnginxを使用していません。

私はすでに次を使用してhttpリダイレクトからhttpsへのWebを強制しています。

  1. ../webapps/ROOT/index.jspでのURLリダイレクト

<% response.sendRedirect("https://www.epi.com.my/portal/"); %>

  1. ../webapps/myapp/WEB-INF/web.xml
<security-constraint>
<web-resource-collection>
  <web-resource-name>Protected Context</web-resource-name>
     <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint></security-constraint>

以下にそのようなコードを追加する場所

ヘッダー追加Strict-Transport-Security "max-age = 15768000"

またはTomcatにはこの機能がありませんでしたか?または、すべてのJava Webアプリコントローラーで変更する必要があります。

9
epiziv

フィルタを使用して追加できます。次のスニペットをweb.xmlに追加します。

<filter>
    <filter-name>HSTSFilter</filter-name>
    <filter-class>security.HSTSFilter</filter-class>
</filter>

次に、Webアプリでフィルターを作成します。

package security;

import Java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class HSTSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) res;

        if (req.isSecure())
            resp.setHeader("Strict-Transport-Security", "max-age=31622400; includeSubDomains");

        chain.doFilter(req, resp);
    }
}

グローバルweb.xml(conf/web.xml)を使用してフィルターを追加することもできます。

11
Severe

Tomcat 7または8を使用できる場合は、 HSTSフィルターに組み込まれている をアクティブ化できます。 Tomcat/conf/web.xmlhttpHeaderSecurityフィルター定義のコメントを解除します

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

便利な最大年齢パラメータを追加します。

<init-param>
    <param-name>hstsMaxAgeSeconds</param-name>
    <param-value>31536000</param-value>
</init-param>

フィルタマッピングのコメントを外すことを忘れないでください:

<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
21
mystygage

rl-rewrite を使用します。

  1. Url-rewrite設定ファイルを作成し、WebアプリケーションのWEB-INF/classesディレクトリに配置します
  2. そのヘッダーをすべてのリクエストに追加するルールを追加します

これはHSTS固有ではないことに注意してください。url-rewriteで何でもできます。

2
  1. このコードをjspのjspスクリプトレットタグの下に追加するだけです

    <%
        response.setHeader("Strict-Transport-Security" ,"max-age=7776000" );
    %>
    

OR

  1. また、JBossがアプリケーションのweb.xmlに以下のタグを追加する場合は、サーバーに追加できます。

    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Strict-Transport-Security" value="max-age=31536000"/>
            </customHeaders>
        </httpProtocol>
    </system.webServer>
    

    にとって <system.webServer> xmlnsiを追加する必要があります。そうしないと、解析例外がスローされます。

OR

  1. 1つのことを行うことができます:アプリケーションでフィルターを作成し、web.xmlでそのアプリケーションを構成します
2
faizan9689