転載する場合は出典を示してください: PHP 脆弱性完全解決策 (9) - ファイル アップロードの脆弱性 Web アプリケーションのセットは通常、訪問者がいくつかのファイルをアップロードしやすくするためにファイル アップロード機能を提供します。 以下は簡単なファイルアップロードフォームです form> php設定ファイルphp.ini、オプションupload_max_filesizeはアップロードできるファイルサイズを指定します、デフォルトは2M$_FILES配列変数ですPHPは変数$_FILESを使用してファイルをアップロードします、 $_FILES は配列です。 test.txt をアップロードすると、$_FILES 配列の内容は次のようになります。 $FILES Array { [file] => Array { [name] =>名前 [タイプ] => text/plain //MIME タイプ [tmp_name] => /tmp/php5D.tmp //一時ファイル [エラー] => 0 //エラーメッセージ ; 536 //ファイルサイズ (バイト単位) } } ファイルアップロードボタンの name 属性値が file の場合、$_FILES を使用します。 [' file']['name'] は、クライアントによってアップロードされたファイルのパスを除いた名前を取得します。 $_FILES['file']['tmp_name'] を使用して、サーバーがアップロードされたファイルを保存する一時ファイルのパスを取得しますアップロードされたファイルが保存されるフォルダーPHP は、アップロードされたファイルをルート ディレクトリに直接配置しません一時ファイルとして保存する場合、名前は $_FILES['file']['tmp_name'] の値になります。開発者は、この一時ファイルを保存されている Web サイトのフォルダーにコピーする必要があります。 $_FILES['file']['tmp_name'] の値は PHP によって設定され、開発者は $_FILES['file']['name'] を使用してファイルを取得する必要があります。アップロードされたファイルの元の名前の値。 ファイルアップロード時のエラー情報$_FILES['file']['error']変数は、ファイルアップロード時のエラー情報を保存するために使用されます: エラー情報Value。 説明 UPLOAD_ERR_OK 0エラーなし UPLOAD_ERR_INI_SIZE 1アップロードされたファイルのサイズがphp.iniの設定を超えています UPLO AD_ERR_FROM_SIZE 2アップロードファイルのサイズHTML の MAX_FILE_SIZE の値を超えています UPLOAD_ERR_PARTIAL 3ファイルの一部のみをアップロードします UPLOAD_ERR_NO_FILE 4ファイルはアップロードされません ファイルアップロードの脆弱性 Web サイト訪問者に画像をアップロードする機能を提供する場合、訪問者がアップロードするのは実際には画像ではなく、指定可能な PHP プログラムである可能性があることに注意する必要があります。画像が保存されているディレクトリが開いているフォルダーである場合、侵入者はアップロードされた PHP ファイルをリモートで実行して攻撃を実行することができます。 以下は簡単なファイルアップロードの例です: php // アップロードされたファイルのディレクトリを設定します $uploaddir = "D:/www/images/" // ファイルが存在するかどうかを確認します if (isset ($_FILES['file1'])) { // ファイル名を含む、Web サイトのディレクトリに配置されるフルパス $uploadfile = $uploaddir . $_FILES['file1']['name' ]; // サーバーに保存されているパスを実際のファイル名に移動します move_FILES['file1']['tmp_name'], $uploadfile); ?> この例ではファイルのサフィックスはチェックされません、任意のファイルをアップロードでき、非常に便利です 明らかなアップロードの脆弱性 上記は、PHP の脆弱性 (9) - ファイル アップロードの脆弱性の完全な説明です。その他の関連コンテンツについては、PHP の中国語 Web サイト (www.php) に注意してください。 .cn)!