DjangoBrothers BLOG ✍️

2022/08/12

このエントリーをはてなブックマークに追加
Django セキュリティ

Djangoサイトをiframeで表示させる方法

Djangoで作ったサイトは、デフォルトだとiframeで表示させることができません。

sample.html

<iframe src="https://Djangoで作ったサイト.com" frameborder="0"></iframe>

このように書いても画像のようになってしまいます。

これはクリックジャッキングを防ぐことを目的としていて、悪意のあるサイトのiframeでDjangoサイトを勝手に利用されることを防いでいます。

同じオリジンにのみiframe利用を許可したい場合は、 X_FRAME_OPTIONS = 'SAMEORIGIN' をsettings.pyに追記することで実現可能です。

特定のサイトでiframe表示を許可する

同じオリジン以外の、ある特定の外部サイトに対してiframe表示を許可させたい場合もあると思います。その場合は、レスポンスヘッダーに Content-Security-Policy: frame-ancestorsを設定します。

Content-Security-Policy: frame-ancestors https://example.com https://example2.com; のような形で指定します。

django-cspというライブラリを使うと簡単に設定できます。

参考