SyntaxHighlighter

2011年9月30日金曜日

局所的な視点でコードの正当性を確認できるように書く

古い記事ですが、いろいろとたどっていて見つけて、目からうろこでした。

「サニタイズ言うなキャンペーン」とは何か(高木浩光@自宅の日記)

PHP のスクリプトで、出力の際に htmlspecialchars 関数を通していないサンプルスクリプトを例に出し、以下のように仰ってます。

たしかにこれは脆弱性ではない。プログラムの全体を精査すれば、「$row['id']」の値が数値しかとらないことを確認できるだろうし、「$row['postdate']」の値が日付を表す文字列しかとらず、HTTPリクエストの値(CGI入力)に依存していない式だとということも確認できるのだろう。
だが、そのような確認作業をしないと正しいコードかどうかわからないような、プログラムの書き方をすべきでない。セキュリティ云々以前に、プログラムの開発方法論として、できるだけ局所的な視点でコードの正当性を確認できるように書くのが、近代プログラミングの基本だ。つまり、このコード断片だけ見て、問題がないとわかるように書くべきである。

ごもっとも。耳が痛いです。私はこれまで、入力の段階でチェック済みの変数に対して、出力時には特になにもしない、というようなコーディングを結構してしまってました。改めることにします。

0 件のコメント:

コメントを投稿