4.9. サイトにまたがった悪意あるコンテンツ(Cross-site Malicious Content)を 防ぐ

信頼できないユーザからのデータを受け付けて、そのデータを次のユーザに渡す プログラムもあります。二番目のユーザのアプリケーションが、見方によっては そのユーザにとって迷惑になる処理をするかもしれません。 これは Web アプリケーションではありがちな問題です。この問題をサイトにまた がった悪意あるコンテンツ(Cross-site Malicious Content)と呼ぶことにします。 つまり、入力(フォームデータも含む)を必ずチェックして、フィルタをかけるか、 エンコードするかしないといけません。 詳しい情報は、Section 6.15 を見てください。

原則として、Web アプリケーションへの入力はすべて、フィルタをかけたり(この 問題を起こす文字を削除する)、エンコードしたり(この問題を起こす文字が問題を 起こさないようにエンコードする)、検証したり(確実に「安全な」データだけが 通過するようにする)しなければいけないことを意味します。 フィルタリングや検証は、入力時に終わらせた方が良いのが普通ですが、エンコードは 入力時でも出力時でも済ませられます。 分析をせずにデータを通してしまうなら、入力時にデータをエンコードする方が良い と思います(忘れないでしょうから)。しかしデータを処理しているなら、エンコード を入力時ではなく出力時にする点については、まだどちらがよいか結論が出ていません。