2

質問:

$_FILES[...]['type'] はクライアントから直接送信されますか、それとも PHP / Apache がこの値を設定しますか?

なぜ私はこれを求めているのですか:

これは、アップロードされたファイルの種類をチェックするアップロード スクリプトを作成しているときに表示されたものです。アップロードされたファイルの MIME タイプをチェックするコードは既にありますが、そのコードは必要ですか?

質問に関連するいくつかのコード:

これは、アップロードされたファイルの検証方法で現在取得している (簡略化された) ものです。これにより、アップロードされたファイルのタイプが実際にクライアントが主張するものであることを確認する必要があります。

// Get temporary file and mime type
$src  = $file["tmp_name"];
$mime = $file['type'];

// Get real file mime type, this does not guarantee that file is valid
$finfo = new finfo();
$file_mime = $finfo->file( $src, FILEINFO_MIME_TYPE );
unset($finfo);

// Test mime types against each other
if ($file_mime === $http_mime)
    return true;
4

2 に答える 2

1

$_FILES['file']['type'] を決して信用しないでください。ブラウザから送信されたものは何でも受け取ります。セキュリティが心配な場合は、finfo_openを使用して、アップロードされたファイルの MIME タイプを確認してください。

于 2013-06-06T10:19:41.847 に答える