TomcatのClickjacking対策
0.背景
近年、Webサイトへのサーバー攻撃が続いて増加傾向にあり。
その一つ-「clickjacking」の対策方法について紹介させていただきます。
1.clickjackingとは
ウェブページの利用者に対し悪意をもって使用される技術の一種で、リンクやボタンなどの要素を隠蔽・ 偽装してクリックを誘い、利用者の意図しない動作をさせようとする手法である。たとえば、別の機能を実行するボタンに見せかけるなどして、埋め込まれたコードを利用者に気づかれないように実行する。
2.TomcatはX-Frame-Optionsの設定で対応する
2.1 X-Frame-Optionsとは
X-Frame-Options は HTTP のレスポンスヘッダーで、ブラウザーがページを <frame>
, <iframe>
, <embed>
, <object>
の中に表示することを許可するかどうかを示すために使用されます。 サイトはコンテンツが他のサイトに埋め込まれないよう保証することで、クリックジャッキング攻撃を防ぐために使用することができます。
2.2 X-Frame-Optionsのディレクティブ
ディレクティブ | 意味 |
---|---|
DENY | 表示を拒否する |
SAMEORIGIN | 同じサイトのみ表示か許可 |
ALLOW-FROM uri | 指定したURIのみ表示が許可する ※最新のブラウザにはもう動きません、使用しないでください。 |
2.3 X-Frame-Optionsの設定
Webサーバの設定ファイルに、X-Frame-Options に関する設定を追加します。
WebContent/WEB-INF/web.xml
...
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
...
3.検証
-
サーバー側を再起動
-
リスポンスのヘッダを確認する
※Chromeの場合、「F12」を押して、DevToolsを起動します。「ネットワーク」の「ヘッダ」タブに確認できること。