x-frame-optionsの設定変更方法

セキュリティ

サーバの設定でX-Frame-Optionsを用いることで、対象サイトがiFrameなどを使ったクリックジャッキング攻撃を防ぐことができるので、積極的に設定していきましょう。

環境

OS Ubuntu 24.04.1 LTS
webServer Apache/2.4.58

確認方法

タンスのServerAnalizerを使って対象ページを確認した時に、次のように表示されている場合は対策が取られていません。
タンスのServer Analyzer (tansunohazama.sakura.ne.jp)

クリックジャッキング攻撃とは

対象のサイトをiFrame等で表示させ、その上に透明な広告などのページを表示させる手法です。
利用者からは一見正規サイトが表示されているように見えるため、画面をクリックすると広告サイト等の意図しないサイトへ誘因されることになります。

修正方法

次のコマンドでapacheのconfファイルを修正してください

$ sudo nano /etc/apache2/apache2.conf

# 一番下に次の設定を追加(初期状態では項目がないので)

# add start X-Frame-Options 2024.10.17
Header always set X-Frame-Options "SAMEORIGIN"
# add end

Header always set X-Frame-Options “SAMEORIGIN”
 └ 同一オリジン以外からのFrameを禁止する
Header always set X-Frame-Options “DENY”
 └ Frameでの表示を一切禁止する
Frameを絶対に使わないのならDENYでもいいと思いますが、SAMEORIGINで充分対策が取れるので推奨します

次のコマンドでApacheを再起動します

$ sudo systemctl restart apache2
# 再起動すれば修正完了

# 次のエラーが出る場合は、mod_headersモジュールが有効になっていないので、次のコマンドで有効にします
 Job for apache2.service failed because the control process exited with error code.
 See "systemctl status apache2.service" and "journalctl -xeu apache2.service" for details.

$ sudo a2enmod headers
 Enabling module headers.
 To activate the new configuration, you need to run:
   systemctl restart apache2
$ sudo systemctl restart apache2

修正結果

次のように表示されていれば対策が取られています。
SOMEORIGIN

DENY

 通常は他のページかiFrameで表示させる必要はないと思いますので、標準設定でSOMEORIGINにしてもらってもいいと思います。