09/01/01 09:18:41 30ZGKnNG
> realpath 通したら仕様が制約される、ってのはなぜ?
理由1:symlinkを展開してしまう。
URLリンク(jp.php.net)
サーバ管理者にとってsymlinkを使って管理しやすくするというのは最も手軽な手段の一つ
symlinkで外部ディレクトリを利用できるようにするという管理方法が制限されてしまう。
理由2:不正な文字列でもinvalidにならない
collectionはシステムから提供される選択肢から選ばれるものであって
ユーザーの任意入力による自由なパラメーターではない。
「3/../3」は不正な文字列であってinvalidでなければならないが、
realpathを通すとvalidになる。
"対策コード"っていうと攻撃できなきゃいいじゃんって思うわけだよね。
だから、場当たり的なコードになって読みにくくなる。
正しく実装すれば防げるものであれば正しく実装すりゃいいじゃんっと思う。