[PHP-users 3868] Re: PHPのセキュリティモデルについて
まつなみ
php-users@php.gr.jp
Mon, 26 Nov 2001 20:36:08 +0900
こんばんは坂本さん。まつなみです。
多くのことが書かれていて,全部理解しきれませんでした。すみません。
ringring> まず結構問題になる可能性のあるfopen関数による情報流出について
サンプルプログラム(1.php,2.php)のことですよね。
これって↓の脆弱性のことでしょうか?
http://www.owasp.org/projects/asac/owasp-iv-dt-1.shtml
(以下の記述はこの予想が合っていると仮定してます)
この手のミスでありがちなのは,
ringring> $fp = fopen($file, "r");
の部分で,$fileがブラウザからの入力データの場合,
$filepath = "/home/data/$file";
$fp = fopen($filepath, "r");
とやってしまうようなケースが多いようです。
そんで,攻撃パターンとしてはURLで?file=../../etc/passwdといった
クエリストリングを指定するものがありがちです。
対策としては,いろいろ方法はありますが,簡単なものとしては
(1)公開するデータファイルは必ず/home/data/以下に置くことにして,
(2)その上でファイル名の命名規則を/^[A-Za-z0-9.]+$/にマッチすると
決めてしまって,
if(preg_match(/^[A-Za-z0-9.]+$/, $file)) {
$filepath = "/home/data/$file";
$fp = fopen($filepath, "r");
...
}
else {
エラー処理...
}
というのでセキュアになると思います。
要するに「入力値チェックをやりましょう!」ということです。
どうでしょう?
※勘違いや間違ってたら済みません。
--
まつなみ <mat@abelia.ocn.ne.jp>