Tomcat 7は、他のセキュリティ関連のヘッダー、たとえばContent-Security-Policy: frame-ancestors 'self'
を挿入できるように、すべての応答でX-Frame-Options
HTTPヘッダーを挿入するように構成できますか?
Tomcat 7.x組み込みフィルター で達成できない場合は、次のいずれかのオプションを試すことができます。
アプリケーションにフィルターを追加することがオプションである場合は、次のコードを使用して、すべての応答にヘッダーを追加できます。
_@WebFilter("/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
chain.doFilter(request, response);
}
}
_
別のオプションはカスタムバルブです。これからのステップを引用する ページ :
Maven Javaアプリケーションを作成します。
次の依存関係を追加します。
_<dependency> <groupid>org.Apache.Tomcat</groupId> <artifactid>Tomcat-catalina</artifactId> <version>7.0.34</version> <scope>provided</scope> </dependency>
_
Javaクラスを作成し、
ValveBase
から拡張します。
invoke(Request, Response)
メソッドを実装します。ライブラリ(_
.jar
_)ファイルをビルドしますライブラリを_
${Tomcat.home}/lib
_ディレクトリにインストールします。新しいValveを使用するように_
server.xml
_を構成します。例えば:_<Valve className="com.example.MyValve"/>
_
- サーバーを起動して、新しいバルブの動作を確認します
バルブの実装は次のようになります。
_public class MyValve extends ValveBase {
@Override
public void invoke(Request request, Response response) throws IOException,
ServletException {
HttpServletResponse httpResponse = response.getResponse();
httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
getNext().invoke(request, response);
}
}
_