編集後記


2006年08月03日(木) [長年日記]

サニタイズ?

しばらくたまっていたPHP関係のMLをちょっと読んでみて、少々前の投稿に、すごく気になるやり取りがありました。
サニタイズを行った(と投稿者が言っているのは、どうやら htmlspecialchars() みたいな処理をやった、ということらしい)データをLDAPに送ったらエラーになった、なんでもかんでもサニタイズすればいいというものではないらしい、いやそうではなくて「サニタイズ=HTMLエスケープ」だと思っていたのだが違うのだ、サニタイズって奥が深い。
というような発言があって、それに対する反応が、
サニタイズは出力先の環境に合わせて適切に変換するのが正解
というもの。この後誰も突っ込まないので、だいたい一般的にこんな認識なんでしょうか。
後者の発言は、おおむねその通りと思うのですが、まだ何か違うと思いました。あまりえらそうなことはいえないけど、「出力先の環境に合わせて適切に変換する」のは、基本でしょう。「セキュアプログラミング」以前の問題だと思います。SQLはSQLの文法に従わなければならないし、LDAPならLDAPの作法があるだろうし、メールなら日本語はISO-2022-JP、SubjectはBASE64(だっけ、忘れたよ)。それはセキュリティホールを作らないためではなく、そうしないと、出力先(データを渡した先)が意図したとおりの動作をしてくれないから。
なんだか基本がすっとばされて、「脆弱性対策のためにサニタイズせよ」というお題目だけが一人歩きしているみたいだ。

プロフィール

星を見る、本を読む、そこらを歩いてまわる・・・→詳しく

注目リンク

バックナンバー