記事個別表示 (3328)
これは「水無月ばけらのえび日記 : サニタイズ言うなキャンペーンがわかりにくい理由」に関連するコメントです。
[3328] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」
りゅう (2006年1月10日 17時27分)
> という必要があるので、状況に応じて危険な文字を削除したり、逆にそのまま使っ
> たりしなければなりません。つまりは意識的に「サニタイズ」しなければならない
> ということだと思うのですが……。これを「サニタイズせよ」と言わなくて済むよ
> うな解決策ってあるのでしょうか。
「入力された値が許容範囲外であることを検出してエラーにする」ことも「サニタイズ」と呼ぶ派のばけらさん相手だと説得力を発揮しないのですが、ほとんどの場合は危険と思われる文字を黙って除去して使用するよりも、明示的にエラーにする方がより適切な対応です。それは値が示すものが変わってしまうような変換や除去処理はなるべく避けるべきだからです。たとえばパス名から ../ を除去すると確実に内容が変わってしまいます。処理後のパス名がたまたま有効なものになる可能性もありますが、それがユーザーの意図したものかどうかは分かりませんし、攻撃者によるものなら間違いなく意図したものではないでしょう。
なので通常はサニタイズは不要なのです。
で、パス名の処理ですが、ファイルシステムのパス名と同等の仕様のものとして扱うから ../ 混じりのパス名は正しいが汚染されているということになるわけです。別途定める仕様のパス名が指定されているとすれば ../ 混じりのパス名は単に誤った形式となるので、汚染された云々という概念が出てこなくなります。そして別途定める仕様のパス名をファイルシステムにマッピングするためのマッパーが「誤った形式」とか「マッピング不能」といったエラーを返すようにすればいいわけです。
といったところが「サニタイズ言うな」キャンペーンの真髄かと。
これは「水無月ばけらのえび日記 : サニタイズ言うなキャンペーンがわかりにくい理由」に関連するコメントです。
全読: [3305]Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」からのスレッド(15件)]