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というライブラリを使うと簡単に設定できます。