「サニタイズ」がスタンダードだったのかもしれない

 
 CGI などでパラメータを受け取った時点で文字の置き換えや削除を行うことを推奨する文書。
 少なくとも 2002 年ではコレがスタンダードだったもより。もしかすると 2000 年の初版から存在していたのかな?
 
 http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/handle-metacharacters.html

7.3. メタキャラクタを扱う
Chapter 4で論じたように、推奨する解決方法は、入力されたらすぐ、それらの文字をともかくエスケープする方法です。しかし、はるかに適切な解決方法は、どの文字を許可するのかを自分で特定する方法です。そして、それらの文字だけを許可するようにフィルタをかけます。


 
 より推奨する方法としてホワイトリストにも触れてますが、「入力されたらすぐ、それらの文字をともかくエスケープ」するというスタンダードがあったことはわかります。
 
 ただし、示されている Chapter 4 では冒頭で次のように触れられています。
Chapter 4. 入力されるものすべてを検証すること
入力には、信頼できないユーザからのものもあります。そこで、使用する前にそれらを検証(選別)する必要があります。まず何が正しいかを定義して、その定義にマッチしないものすべてを拒否するようにしなければいけません。その逆の定義の仕方をしてはいけません(何が不正かを定義し、それらを拒否する)。なぜなら、重大なケースをうっかり定義し忘れてしまうかもしれないからです。
 
 ホワイトリストを強く推奨していることがわかります。むしろブラックリスト(危険とされる文字種を選択的に排除すること)は望ましくないとされています。
 
 もしかすると、あくまでもたったこれだけの、一編の文書のみから導いた想像でしかありませんけれど、Chapter 7 の 3 「メタキャラクタを扱う」だけが一人歩きした、ということがあったのかもしれません。
 
 いや、おそらく実際にはもっと前からだったんでしょうけれども。
 
 
 どこから始まったのか、ちゃんと追跡すると面白いかもしれませんね。情報系の学部のひと、研究テーマに「セキュリティ対策を含んだプログラミングテクニックの変遷」とかやってみません?
 
 
 
 
 なんてことを仕事中に調べ物しててみつけた文書からつらつらと妄想。