is_uploaded_file関数によるファイルアップロードができない問題_PHPチュートリアル
原因:
あるプロジェクトで、すべての顧客がファイルをアップロードできず、すべて失敗が返されたというフィードバックをユーザーから受け取りました。調査の結果、PHP の is_uploaded_file 関数が問題を引き起こしていることが判明しました。
詳細な分析:
通常の状況では、PHP を介してファイルをアップロードする場合、is_uploaded_file 関数を使用して、ファイルが HTTP POST を介してアップロードされるかどうかを判断する必要があります。これを使用すると、悪意のあるユーザーがスクリプトを騙すことができなくなります。 /etc/passwd などのアクセスできないファイルにアクセスします。
今回発生した問題は、C:/WINDOWS/Temp/php99.tmp であるはずの tmp_name が C://WINDOWS //Temp//php99.tmp になり、is_uploaded_file 関数が間違った情報を返すことです。
処理方法:
以下のコードを追加すると問題は解決します。
$file['tmp_name'] = str_replace('////', '//', $file['tmp_name']);
実際の文字列 "////" は 2 つの / であることに注意してください。他の 2 つは脱出を表すために使用されます。
詳細な調査:
なぜ特定の環境でこれが起こるのでしょうか? 次の分析を見てみましょう:
magic_quotes_gpc = On PHP の場合。構成では、magic_quotes_gpc がオンになっており、magic_quotes_gpc パラメータがオンになっている PHP 環境では、addlashes 効果が GET/POST /Cookie に自動的に追加されます。 addslashes は $_FILES に追加されないことに注意してください。
magic_quotes_gpc が Off の場合、addslashes 関数が $_FILES 配列に追加されるため、問題が発生します。この問題は、magic_quotes_gpc がオフになっている PHP 環境でも発生します。
ところで、SVN の MooPHP コードはこの問題を修正しました。
is_uploaded_file 関数の分析:
ファイルが HTTP POST 経由でアップロードされているかどうかを判断します
bool is_uploaded_file ( string $filename )
filename で指定されたファイルが HTTP POST 経由でアップロードされた場合は TRUE を返します。これを使用すると、悪意のあるユーザーがスクリプトをだまして、/etc/passwd などの本来アクセスできないファイルにアクセスできないようにすることができます。 このチェックは、アップロードされたファイルによってそのコンテンツがシステムのユーザーまたは他のユーザーに表示される可能性がある場合に特に重要です。
is_uploaded_file() 関数が正しく動作するには、$_FILES['userfile']['tmp_name'] のような変数を指定する必要があり、クライアントからアップロードされたファイル名には $_FILES['userfile'] が指定されている必要があります。 ['名前'] が正しく機能していません。
http://www.bkjia.com/PHPjc/824960.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

123 クラウド ディスクにファイルをアップロードするにはどうすればよいですか? ファイルを 123 クラウド ディスクにアップロードして保存できますが、ほとんどの友人は 123 クラウド ディスクにファイルをアップロードする方法を知りません。次に、123 クラウドにファイルをアップロードする方法の画像とテキストを示します。編集者がプレイヤーのために持ってきたディスク、チュートリアル、興味のあるユーザーは見に来てください! 123 Cloud Disk にファイルをアップロードする方法 1. まず 123 Cloud Disk を開いてメイン ページに入り、アカウントに登録またはログインします; 2. 次に、以下に示すページに入り、矢印に沿って [アップロード] ボタンをクリックします。 3. 下部が展開されます。 機能バー ウィンドウで [ファイルの選択] 機能をクリックします; 4. 最後に、アップロードするファイルを選択し、アップロードが完了するまで辛抱強く待ちます。

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

ファイルの親パスを取得するには、Java の File.getParent() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。場合によっては、ファイルの親パス、つまりファイルが存在するフォルダーのパスを取得する必要があることがあります。 Java の File クラスには、ファイルまたはフォルダーの親パスを取得する getParent() メソッドが用意されています。 File クラスは、ファイルとフォルダーを Java で抽象表現したもので、ファイルとフォルダーを操作するための一連のメソッドを提供します。その中で、手に入れてください

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します

Java の File.mkdirs() 関数を使用して複数レベルのディレクトリを作成する Java では、ファイルを保存および整理するためにフォルダーを作成する必要がよくあります。場合によっては、サブフォルダーを含むフォルダーであるマルチレベルのディレクトリを作成する必要があります。 Java では、この関数を実装するために File クラスの mkdirs() 関数が提供されています。 Fileクラスはファイルやディレクトリを扱うJavaのクラスで、ファイルやディレクトリを操作するための一連のメソッドを提供します。このうち mkdirs() 関数は、複数階層のディレクトリを作成する関数です。下
