ホームページ > バックエンド開発 > PHPチュートリアル > PHP はファイルの偽装 (ファイルのアップロード) を識別します

PHP はファイルの偽装 (ファイルのアップロード) を識別します

藏色散人
リリース: 2023-04-08 10:46:01
転載
2713 人が閲覧しました

PHP はファイルの偽装 (ファイルのアップロード) を識別します

質問:

ファイルをアップロードする場合、アップロードされたファイルが合法かどうかを確認する必要があります。ファイル偽装を特定しますか?

簡単なテスト: txt ファイルのサフィックスを直接 jpg に変更します。upload

<!DOCTYPE html>
<html>
    <title>test</title>
    <body>
        <form enctype="multipart/form-data" action="test.php" method="POST">
            <!-- MAX_FILE_SIZE must precede the file input field -->
            <input type="hidden" name="MAX_FILE_SIZE" value="102400" />
            <!-- Name of input element determines name in $_FILES array -->
            Send this file: <input name="userfile" type="file" />
            <input type="submit" value="Send File" />
        </form>
    </body>
</html>
ログイン後にコピー

1. $_FILES['userfile']['type'];

を通じてファイルのサフィックスを取得します。
$data = $_FILES[&#39;userfile&#39;];
var_dump($data);
/**结果**/
/*
array(5) {
  ["name"]=>
  string(8) "test.jpg"
  ["type"]=>
  string(10) "image/jpeg"
  ["tmp_name"]=>
  string(26) "/private/var/tmp/phpfyE3EC"
  ["error"]=>
  int(0)
  ["size"]=>
  int(19)
}
*/
ログイン後にコピー

検出されません;

2. pathinfo() 関数を使用してファイル パス情報を取得します

$data = $_FILES[&#39;userfile&#39;];
// var_dump($data);
var_dump(pathinfo($data[&#39;name&#39;]));
/**结果**/
/*
array(4) {
  ["dirname"]=>
  string(1) "."
  ["basename"]=>
  string(8) "test.jpg"
  ["extension"]=>
  string(3) "jpg"
  ["filename"]=>
  string(4) "test"
}
*/
ログイン後にコピー

検出されません;

3. PHP 拡張子 fileinfo (必要があります)インストールして有効にする必要があります)

$data = $_FILES[&#39;userfile&#39;];
$filename = $data[&#39;tmp_name&#39;];
$finfo   = finfo_open(FILEINFO_MIME_TYPE);//返回 mime 类型。 自 PHP 5.3.0 可用。
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);
var_dump($mimetype);
/**结果**/
//string(10) "text/plain"
ログイン後にコピー

はい!できる!できる!ファイルの MIME タイプが jpg ではないことが検出されました。

関連する php の知識については、php チュートリアル をご覧ください。

以上がPHP はファイルの偽装 (ファイルのアップロード) を識別しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート