̃Gg[͂ĂȃubN}[Nɒlj

「Internet Explorer は、クロスサイト スクリプトを防止するために、このページを変更しました。」の対策



たまたま当サイトを IE9 でアクセスすると下記のアラートが出現した。

Internet Explorer は、クロスサイト スクリプトを防止するために、このページを変更しました。

上記のIEが出すアラートは、いろいろ原因があるようだが、どうやら今回は URL に「javascript:」が含まれているのが原因と判明。
回避策として、下記の リライトルール を .htaccess に書いて、とりあえず対策したのでメモしておきます。

RewriteEngine on

#
# for IE
# javascript uri problem
# eg. if access to `http://example.com/path:to:javascript:something'
#        redirect to `http://example.com/path:to:js:something'
#
RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule ^(.+?):javascript:(.*)$ http://%{HTTP_HOST}/$1:js:$2 [R=301,L]

RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule ^(.+?):js:(.*)$ $1:javascript:$2 [L,QSA]


説明
  1. 「MSIE」を含むユーザーエージェントで、
  2. http://example.com/path:to:javascript:something のように「javascript:」を含む URL にリクエストがあった場合、
  3. http://example.com/path:to:js:something のように「javascript:」の部分を「js:」に書き換えてリダイレクトし、
  4. 内部では「javascript:」にリクエストがあったのと同じ処理を行う。


補足
RewriteRule ^(.+?):js:(.*)$ $1:javascript:$2 [L,QSA]

上記 最終行の部分は、フレームワークやCMSを使っている場合、下記のようになるかもしれません。

RewriteRule ^(.+?):js:(.*)$ index.php?path=$1:javascript:$2 [L,QSA]

※ 環境に応じて適宜変更してください。





server/apache/etc/rewrite_ie_javascript_uri_problem.txt