忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/03/28 23:18 |
PHP5.3:open_basedirの限界
open_basedirとは、PHPから開くことのできるディレクトリを限定する機能です。
ディレクトリトラバーサル対策には入力値から.や/を外すのが正道ですが、万一それが突破された際の防波堤として役に立ちます。
が、
ini_set('open_basedir', '/hoge/fuga/');
file_get_contents('../hoge.txt'); //エラーになる
exec('more ../hoge.txt');         //エラーにならない

見てのとおり、exec()やpassthru()関数はopen_basedirの制限を突破します。

exec('ls')ってやった場合lsは何処にあるかというと普通/bin/lsあたりで、そのためだけにわざわざini_set('open_basedir', '/bin/')なんてやったりしませんね。

ということでexec()を使う場合、open_basedirはディレクトリトラバーサル対策にはなりません。
まあexec()に入力値は使うなってこった。
PR


2011/03/08 00:36 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2011/03/13 | HOME | 買ったものリスト 2011/03/06>>
忍者ブログ[PR]