動的なファイルインクルードを行う時のセキュリティ対策
PC関連 | 2008-05-08【PHP】動的なファイルインクルードを行う時のセキュリティ対策
例:
$file = $GET[‘file’];
include($file);
?>
この場合、外部にあるファイルや、Webに公開されていないローカルのファイルを読み込む脆弱性があります。
↓
$file = basename($GET[‘file’]);
include($file);
?>
basename()関数を使うことで、ファイル名の部分のみを取得するので、
上記の脆弱性はなくなります。
allow_url_fopenの設定をoffにすることでも対策にはなりますが、
設定に依存するコードは環境が変わった場合に、脆弱性となってしまうため、
basename()関数を利用したほうがよい。
※PHP5プログラミング エキスパート編から参照