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.htmliframe経由で表示できるようになる。今のところ実装はないので、こうするとfoo.htmlはどこからでもiframe経由で参照できるようになる。


Internet Explorerでは(X-)Frame-Optionsヘッダーにより読み込みが拒否された場合、このようなエラー画面が代わりに表示される。
IE9's (X-)Frame-Options Error Message

(X-)Frame-Optionsヘッダーでの他者からの参照を拒否した場合、多くのブラウザーでは空白になっちゃう(iframe要素の内容が代わりに表示されたりもしない)のはちょっとアレかなーと思っている。Internet Explorer 9のこのエラー画面はそこそこわかりやすいし、参照されているページを開き直す方法もわかりやすくユーザーには優しそうな気はする。Opera 11も似た感じのエラー画面が表示されて良い感じ。ただこの画面をパクってフィッシング・サイトへ誘導とかも簡単に可能なので、微妙なところなのかもしれない。