iframe
要素での参照等を制御できる(X-)Frame-Optionsヘッダーでは常に拒否するDENY
と他者からの参照のみを拒否するSAMEORIGIN
が定められており、多くの現行ブラウザーで実装済み。それに加えて許可するドメインを指定できるALLOW-FROM
が定められようとしている。もう実装はあるのかな……と2012/04/25現在での現行ブラウザーでざっと調べた感じでは、Internet Explorer 9(と10)だけ対応していた。他のブラウザーはALLOW-FROM
を使うとどこからでも参照できるようになる。
以下は未来の自分へのメモ。
Header set X-Frame-Options "SAMEORIGIN"
<FilesMatch "^foo.html$">
Header set X-Frame-Options "ALLOW-FROM http://screenqueri.es/"
</FilesMatch>
これで基本は他者からの参照を拒否しておいて、Screenqueri.es(手軽にMedia QueriesをテストすることができるWebサイト)からのみfoo.html
をiframe
経由で表示できるようになる。今のところ実装はないので、こうするとfoo.html
はどこからでもiframe
経由で参照できるようになる。
(X-)Frame-Optionsヘッダーでの他者からの参照を拒否した場合、多くのブラウザーでは空白になっちゃう(iframe
要素の内容が代わりに表示されたりもしない)のはちょっとアレかなーと思っている。Internet Explorer 9のこのエラー画面はそこそこわかりやすいし、参照されているページを開き直す方法もわかりやすくユーザーには優しそうな気はする。Opera 11も似た感じのエラー画面が表示されて良い感じ。ただこの画面をパクってフィッシング・サイトへ誘導とかも簡単に可能なので、微妙なところなのかもしれない。