PHP 7のファイルアップロードの処理は、PHP 7のファイルアップロードのハンドリングには、主に組み込み
スーパーグロバルアレイをレバレバリングするいくつかの重要なステップが含まれます。この配列には、名前、一時的な場所、サイズ、タイプ、エラーステータスなど、アップロードされたファイルに関する情報が含まれています。 プロセスは通常、次の手順に従います:
$_FILES
htmlフォーム:-
属性を持つHTMLフォームを作成します。この属性は重要です。これは、PHPがアップロードを正しく処理するために必要なMultiPart/Form-Dataとしてファイルデータを送信するようにブラウザに指示します。 フォームには、ユーザーがファイルを選択できるようにするための要素を含める必要があります。
enctype="multipart/form-data"
<input type="file">
php処理:- サーバー側(PHPスクリプト)には、SuperGlobalにはアップロードされたファイル情報が含まれます。 (ファイル名)、
$_FILES
(一時ファイルの場所)、$_FILES['file_input_name']['name']
(バイト単位のファイルサイズ)、$_FILES['file_input_name']['tmp_name']
(ファイルMIMEタイプ)、$_FILES['file_input_name']['size']
(アップロードエラーコード)などのインデックスを使用して、ファイルの詳細にアクセスします。 $_FILES['file_input_name']['type']
要素の実際の$_FILES['file_input_name']['error']
属性に'file_input_name'
name
<input type="file">
- エラー処理:値を確認することを忘れないでください。 異なる数値値は異なるエラーを表します(たとえば、0は成功を示し、4はファイルがアップロード制限を超えたことを示します)。 これらのエラーを優雅に処理し、アップロードが失敗した場合にユーザーに通知します。この関数は、ファイルが安全に移動されることを保証し、潜在的なセキュリティの脆弱性を防ぎます。 たとえば、
$_FILES['file_input_name']['error']
-
cleanup:アップロードが成功した場合、またはエラーが発生した場合は、一時ファイルをクリーンアップすることを忘れないでください。 通常、PHPはこれを自動的に処理しますが、明示的に削除すると堅牢性が向上する可能性があります。 いくつかの手段が不可欠です:move_uploaded_file()
-
ファイルのタイプ検証:簡単にスプーフィングできるため、値だけに依存しないでください。 代わりに、
$_FILES['file_input_name']['type']
およびfinfo_open()
関数を使用して、コンテンツに基づいてファイルのMIMEタイプを決定します。これにより、ファイルタイプを確認するためのより信頼性の高い方法が提供されます。 これにより、予期しない拡張機能を備えた悪意のあるアップロードを防ぐのに役立ちます。 ディレクトリのトラバーサル攻撃を防ぐためにファイル名を消毒します。finfo_file()
-
ファイルサイズ制限:PHP構成で適切なファイルサイズ制限を設定し(
および- in)、また、スクリプトのファイルサイズを検証して、サーバーを圧倒する可能性があります。ファイル名を消毒して、ディレクトリのトラバーサル攻撃を防止します(悪意のあるユーザーが指定されたアップロードディレクトリ外にファイルにアクセスしようとします)。 のような関数を使用して、ファイル名のみを抽出し、潜在的に有害な文字が含まれていないことを確認してください。
upload_max_filesize
post_max_size
php.ini
ディレクトリアクセス許可: アップロードディレクトリに適切な権限があることを確認してください。 Webサーバーには書き込みアクセスが必要ですが、システムのセキュリティを損なう可能性のある過度の権限を持たないようにしてください。-
定期的なセキュリティ監査:
basename()
コードとセキュリティプラクティスを定期的に確認して、潜在的な脆弱性を特定して対処します。 ファイルタイプの検証( およびを使用)、ファイル拡張検証(ホワイトリストを使用)、ファイルサイズの検証の組み合わせは、悪意のあるファイルに対する堅牢な防御を提供します。 さらに:
-
コンテンツスキャン:
セキュリティの強化については、アップロードされたファイル内の悪意のあるコードを検出するためにコンテンツスキャンを実行するサードパーティライブラリまたはサービスを統合することを検討してください(例えば、ウイルス、マルウェア)。ハッシュ)アップロードされたファイルを管理するためのベストプラクティスは、アップロードされたファイルが転送中に改ざんされていないことを確認するため アップロードされたファイルの効率的な管理を管理するために不可欠です。 これらのベストプラクティスを考えてみましょう:
-
整理されたストレージ:適切に構造化されたディレクトリ構造を作成して、アップロードされたファイルを論理的に整理します。 これは、日付、ユーザーID、またはその他の関連する基準に基づいている場合があります。 セキュリティ上の理由からファイルをWebRootディレクトリに直接保存しないでください。
- データベース統合:データベース内のアップロードされたファイル(ファイル名、ファイルパス、アップロード日、ユーザーIDなど)についてメタデータを保存します。これにより、ファイルに関する情報を簡単に管理および取得できます。 タイムスタンプ、ランダム文字列、またはハッシュの組み合わせを使用して一意の名前を作成できます。
ファイル圧縮:- 大型ファイルを圧縮してストレージスペースを保存し、ダウンロード速度を改善します。古いファイルまたは未使用のファイルを定期的にクリーンアップして、ストレージスペースを効果的に管理します。 この目的のためにCRONジョブまたはスケジュールされたタスクを使用することを検討してください。
cdn統合:- 高トラフィックアプリケーションについては、コンテンツ配信ネットワーク(CDN)を使用して、複数のサーバーにアップロードされたファイルを配布し、パフォーマンスとスケーラビリティを改善します。セキュリティは継続的なプロセスであり、堅牢で安全なシステムを維持するためには、定期的な更新とレビューが不可欠であることに注意してください。
以上がPHP 7でファイルアップロードを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。