ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

サニタイズ言うなキャンペーン

サニタイズ」という言葉のイメージの問題なのかなぁ?
私の場合、サニタイズ=出力直前(自分が作ったコード、というか自分で制御できるコード、から別の人が作ったコード、例えばRDBMSとか自分で制御できないコード、にデータを渡す直前)に行うことというイメージが強いんだよねぇ。
普通は、関数とか、メソッドの引数が正しいデータ(例えば、数値項目には数値データしか入ってないかとか、文字数が想定範囲内かとか)のみから構成されているかどうかの確認が、そのデータを使う前に、必要だと思うんだけど・・・(そうしないとバッファオーバフローは防げない、というか、出来なくはないけど、あまり美しくない気がする)。これは「サニタイズ」ではないと思うんだよね。
サニタイズ」はあくまで、データとしては正しいんだけど、そのデータが含まれていると、出力先のコードで、開発者が予期しない動きをするのを防ぐためのもの(追記:これを全て「エスケープ処理」というのはかなり抵抗がある。「エスケープ処理」は、一括してデータに含まれるAという文字列をBという文字列に、変換して、意図どおりの動きをさせるというイメージがあるので。場合によってはそういった変換をしたくないときもあるだろうし・・・。あくまで私のイメージということで、と書いてて矛盾があるような気がしてきた^^;)だと思うので、出力直前にやるのは当然で、今一「サニタイズ言うな」キャンペーンの意味が分からなかったりする、今日この頃。

と今更ながらに書いてみる。