Web アプリケーションにおいては、HTTPを通じて入出力するデータ全てを精査しなくてはいけない。

当然の話なんですけどね。

  • 入力したデータをSQLの一部に利用するなら、SQL文に影響を与えるキャラクタはエスケープする。
  • HTMLを出力するときにはHTMLに影響を与えるメタキャラクタをエスケープして出力する。
  • HTTP応答ヘッダを出力するときには、HTTP応答ヘッダとして無害であるデータのみを出力する。
  • ユーザによる画像のアップロードを可能にするなら、アップロードされる画像データが正しいものか検査する。
  • 画像を出力するなら、出力する画像がクライアントに悪影響を与えないようにする。

などなど。なんだか、「サニタイズ言うなキャンペーン」や一連のSQLインジェクションの影響なのか、「Webアプリケーションのセキュリティ=HTMLとSQLエスケープ」という構図になってしまってる気がします…なんとなくそんなふうに思うだけですけど。
やっぱり、HTTPを通じてやり取りする全てのデータを検査しないとダメですよね。