質問: そもそも、画像XSSを再現するのに手間取りました。 IE、GC、FFで確認していますが、`` のように問題あるファイルを読み込んでも、スクリプトは実行されません。 ファイルの中身をまるごと出力する `readfile` を使った場合に画像XSSが成功しました。 そもそも、`readfile` で問題のあるファイルを読み込まない限り、画像XSSは成立しないのでしょうか? PHPを使って意図的に画像XSSを成功させたい場合、`readfile` 以外で出来る方法はありますか? (黙って `X-Content-Type-Options: nosniff` を指定しておけって話ですが...) ご存じの方いれば、教えてください((_ _ ( ́ω` )ペコ
回答: いちばん上にあった徳丸さんのブログ記事でも、下の方についたコメントで「IE8でも再現できない(大意)」とありました。質問1については、その時点でもう直されている、ということでしょう。 そして、「検証2」で挙げている「ブラウザからの送信時の`Content-Type`」ですが、そもそもこの値はサーバサイドで**使うべきではありません**。というのも、ブラウザ以外のクライアントを使えば、でたらめな`Content-Type`を付けてPOSTすることも容易にできてしまうからです。サーバサイドの自前でファイルの内容から判定する、のが適切です。つまり、質問2に対する回答は、「ブラウザ以外を使えば簡単にできる」となります。 質問3ですが、これまた徳丸さんのサイトに、「問題の画像のURLをアドレスバーに直打ちした」という例があがっていますが、他にも「画像だけポップアップさせる仕組みを使う」「リダイレクタやXSSでページまるごと遷移させる」など、手段はいくつか考えられます。