Web アプリケーションにおいては、HTTPを通じて入出力するデータ全てを精査しなくてはいけない。
当然の話なんですけどね。
- 入力したデータをSQLの一部に利用するなら、SQL文に影響を与えるキャラクタはエスケープする。
- HTMLを出力するときにはHTMLに影響を与えるメタキャラクタをエスケープして出力する。
- HTTP応答ヘッダを出力するときには、HTTP応答ヘッダとして無害であるデータのみを出力する。
- ユーザによる画像のアップロードを可能にするなら、アップロードされる画像データが正しいものか検査する。
- 画像を出力するなら、出力する画像がクライアントに悪影響を与えないようにする。
などなど。なんだか、「サニタイズ言うなキャンペーン」や一連のSQLインジェクションの影響なのか、「Webアプリケーションのセキュリティ=HTMLとSQLのエスケープ」という構図になってしまってる気がします…なんとなくそんなふうに思うだけですけど。
やっぱり、HTTPを通じてやり取りする全てのデータを検査しないとダメですよね。