2

クリックジャッキング攻撃に対抗するために、Tomcat で HttpHeaderSecurityFilter フィルターを有効にしようとしています。これをすべてのアプリケーションに適用したいので、Tomcat 自身の conf/web.xml ファイルで、このフィルターのデフォルトの <filter> および <filter-mapping> エントリーのコメントを外しました。

私が知る限り、これはTomcatによって完全に無視されているようです。conf/web.xml ファイルをアプリ自体のファイルとマージした後、Tomcat がアプリに使用する効果的な web.xml ファイルを確認するために、次のように META-INF/context.xml ファイルを Web アプリの 1 つに追加しました。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Context logEffectiveWebXml="true"></Context>

結果の catalina.log の出力は、conf/web.xml からのフィルター エントリが欠落していることを除いて、有効に見えます (両方のファイルのコンテンツがマージされます)。そこに独自の追加フィルター エントリを導入しようとしましたが、それらも有効な web.xml に表示されないことがわかりました。

HttpHeaderSecurityFilter フィルターとフィルター マッピング エントリを Web アプリ自体の web.xml ファイルにコピーすると、問題なく動作します (しかし、これは明らかに私が望んでいるものではありません!)

Tomcat が conf/web.xml のフィルター エントリを尊重するようにするためのトリックはありますか?

最終的には、Tomcat 7 と 8 の両方でこれが機能する必要があります (組み込みフィルターは Tomcat 7.0.63 でのみ追加されたことを認識しています)。

4

1 に答える 1

0

最終的に、このフィルターは特に変更を加えることなく機能し始めました (非常に満足のいく解像度ではありませんが...)。最初から機能していた可能性はいくらかありますが、フィルターが最初に配置された状態でページが iframe に正常に読み込まれることを観察したことはかなり確信しています。今はよくわかりません。

他の人にとっておそらく有用な発見だったのは、フィルターが機能していることを確認できたとしても、有効な web.xml ログ出力にフィルターの詳細が含まれていなかったことです。これは、ある種の Tomcat バグのようです。(注: Tomcat 8 で有効な web.xml ロギングのみをテストしました。)

于 2015-10-21T12:57:11.757 に答える