HTMLの本を読んでいたのですが、その中に適切なContent-TypeがXSS対策に有効と書いてあります。
XSSとContent-Typeの関連性が、イマイチしっくり来なかったのですが、日経の記事を見たら理由がわかりました。
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が設定されるようにしておきましょう。