記事個別表示 (5039)
これは「水無月ばけらのえび日記 : 出力をホワイトリストで処理することを真剣に考えてみる」に関連するコメントです。
[5039] Re: 「出力をホワイトリストで処理することを真剣に考えてみる」
りゅう (2008年10月6日 15時31分)
せっかくなので私も真剣に考えてみました。以下本文。
ホワイトリストによるフィルタリングというのは、ソフトウェアが扱う値を動作保障されている範囲に限定することによって、想定外の挙動が起こることを防ぐというものです。したがってホワイトリストに含まれるものは、なんらかの方法によって動作保障がなされているものである必要があります。そうでないものはすべて「グレー」で、ホワイトリストに含めるべきものではありません。
注釈に「ASCII非互換でものすごく変な文字符号化方式があったりしたら分かりませんが……」とある通り、そのホワイトリストでは想定外の挙動が起こらないことが保障できていません。したがって [0-9a-zA-Z] は「グレー」で、「白」ではない以上ホワイトリストに含めることは適切ではありません。ということでホワイトリストには何も含まれなくなり、すべての文字をエスケープすることになるわけですが、それで想定外の挙動は起こらないと保証できるでしょうか。できないはずです。なぜなら問題を起こすのは自分が作成したソフトウェアではないからです。
ウェブアプリケーションが出力したデータで問題を起こすのは、データを受け取った側のソフトウェアで、ほとんどの場合それは他人が作成したものです。他人が作成したソフトウェアの動作を保障することはできないため、出力のホワイトリストというものを作成するということができません。作ったとしてもそれは出力側が勝手に考えた「白」っぽいリストというだけであって、受け手側のホワイトリストである保障はありません。したがって出力をホワイトリストで処理するということに意味は無いということになります。
これは「水無月ばけらのえび日記 : 出力をホワイトリストで処理することを真剣に考えてみる」に関連するコメントです。
全読: [5035]Re: 「出力をホワイトリストで処理することを真剣に考えてみる」からのスレッド(8件)]