別サイトでiframe使いたいけどセキュリティ設定に苦しめられた話
「test1.hoge」のとあるページを「test2.hoge」で表示したい。
普通にiframe使うと思いますが「test1.hoge」のセキュリティが効いてブロックされる。。。
ググるけど英語サイトばかりで苦労しました。。。
X-Frame-Options
クリックジャッキングの対策でNGINXのconfに下記が設定されておりました。
add_header X-Frame-Options "SAMEORIGIN";
調べたらX-Frame-Optionsで有効な項目が下記になる。
・SAMEORIGIN
表示できるのは同じドメイン内のみ(いらなくない?)
・DENY
みんな禁止!
・ALLOW-FROM uri
指定したURIは表示できる
ALLOW-FROM使えば解決じゃん!って思って下記に修正。
add_header X-Frame-Options "ALLOW-FROM test2.hoge";
しかし表示できず。。。
どうやらALLOW-FROMは多数のブラウザで効かないようでして。。。
X-Frame-Optionsを使わないと誰でも表示できちゃうのはセキュリティ的によくないし。。。
そしてたどり着いたのが下記ページ。
PTC Windchill ヘルプセンター
frame-ancestors
Content-Security-Policy、CSPというもので代替えができそうな感じ。
ググり続けると下記ページに詳細がありました。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9Q29udGVudC1TZWN1cml0eS1Qb2xpY3klRTMlODElQUUlRTYlQTYlODIlRTglQTYlODElRTMlODMlQTElRTMlODMlQTImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTNkYmNmZDQwM2U0NTRiOGI0Mzk5ODNkMjQ4ZjI1MDIz&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwemFidSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MThjZmFmYWM3OGE5Mzg4ZWVhZjg0ZWU2ZTMzOWRhYjk&blend-x=142&blend-y=491&blend-mode=normal&s=f681d9835cb5a41dcb7e972bfc3f60e4)
Content-Security-Policyの概要メモ - Qiita
Content Security Policy(CSP)概要GoogleTagManagerのカスタムHTMLタグ、カスタムJavaScript変数を制限するために調べた時のメモ。基本仕様ホ…
frame-ancestorsにURIを指定してあげればよさげ。
X-Frame-Optionsを消して下記を記述。
add_header content-security-policy: "frame-ancestors test2.hoge;";
「test2.hoge」で表示できた!
試しに「test3.hoge」で確認したら表示されない!
これでクリックジャッキング対策のホワイトリスト的なことができました。
コメント