このすみノート

Webエンジニアが技術や趣味を書くブログです。

Content-Typeの設定がXSS(クロスサイト・スクリプティング)に有効な理由

HTMLの本を読んでいたのですが、その中に適切なContent-TypeがXSS対策に有効と書いてあります。

XSSとContent-Typeの関連性が、イマイチしっくり来なかったのですが、日経の記事を見たら理由がわかりました。

xtech.nikkei.com

JSON形式のファイルでXSSが起こる事例

たとえば、次のJSONを出力するページがあるとします。

{"a" : "b", "c" : "<script>alert(1)</script>"} 

これは普通に見ればJSONだと一瞬でわかるのですが、もしContent-Typeが「text/html」になっていた場合、ブラウザはHTMLコンテンツと誤認してスクリプトが実行されてしまうというわけです。

必ず適切なContent-Typeを設定しよう

上記の理由を加味すると、仮に内部的なWebAPIであったとしても、必ず適切なContent-Typeを設定することが重要であると言えます。

自前でContent-Typeを付与するのは抜け漏れが起きそうなので、フレームワークやライブラリをはじめ、共通化したルートを経由して必ず適切なContent-Typeが設定されるようにしておきましょう。