IE8で「XSS Filter」というものに突き当たった [Web]
あらまし
運営しているネットサービスのひとつで、URLにパラメータを付加して投稿できるAPIがあるのだけど、特定のパラメータを入れた場合、IE8だと想定通りに動作せず投稿ができないという現象に突き当たった。
結論からいうと、IE8にはXSS防止を目的とした「XSS Filter」という有り難い機能があり、今回はパラメータによる操作内容がこの「XSS Filter」に(誤)検知され、内容を書き換えられてしまった、ということのよう。以下メモ。
現象
URLに続けて、こんな感じに入れたはずのパラメータが、、
<object>
<param name='xxx' value='xxx' />
<param name='xxx' value='xxx' />
<embed src='xxx' type='application/x-shockwave-flash' ></embed>
</object>
IE8を通すと、大まかには↓こんな風に書き換えられ無効化されてしまった。
<object>
<param name#'xxx' value#'xxx' />
<param name#'xxx' value#'xxx' />
<embed src#'xxx' type#'application/x-shockwave-flash' ></embed>
</object>
回避方法
サイト側で、フィルタ機能を無効にすることができる。下記に簡潔に。
msdn What's New in Internet Explorer 8
Security and Privacy
msdn IEBlog
IEBlog IE8 Security Part IV: The XSS Filter(→なんと全文翻訳してくださってる方がいました)
おわり
というところまで調べて、後はくわしい人に引き継いだ。こういう問題がいろいろあるから面倒臭いのだけど、原因に近づけると少しおもしろかったりもする。