0

.jpg、.jpeg、.png、.bmp、.gif などの画像を安全にアップロードするための PHP ファイルのコーディングに忙しい

コードは次のとおりです。

$realname = $_FILES['userfile']['name'];

if(!preg_match("/(\.jpg|\.png|\.gif|\.bmp|\.jpeg)$/i",$realname)) {
          die();
}

このチェックをバイパスして .php ファイルをアップロードできるようにする方法はありますか? file.php%00.jpg のトリックについて聞いたことがありますが、それは安全です。他の方法を知っている人はいますか?または、上記のコードは安全ですか?

4

1 に答える 1

0

質問に答えるには:はい。

しかし、あなたは運がいいです、私はこれを書きました:

function checkImageFileIsImage($filepath) {
    $type = exif_imagetype($filepath);
    $allowedTypes = array(
        1,  // [] gif
        2,  // [] jpg
        3   // [] png
    );

    if (!in_array($type, $allowedTypes)) {
        return false;
    }
    return true;
}

その他のファイル タイプについては、http://php.net/manual/en/function.exif-imagetype.php をご覧ください

于 2013-08-15T20:54:03.163 に答える