-
厳密なファイルタイプ検証:
関數(shù)を使用して、サーバー側(cè)の実際のファイルタイプを確認(rèn)します。 これにより、ユーザーは拡張機(jī)能を変更して悪意のあるファイルを偽裝することができなくなります。 たとえば、finfo
クライアント側(cè)のファイル拡張機(jī)能のみに依存することを避けます。 代わりに、イメージファイルのgetimagesize()
クラス(推奨)または$finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($_FILES['file']['tmp_name']); if ($mime_type != 'image/jpeg' && $mime_type != 'image/png') { // Handle invalid file type }
-
ini_set()
ファイルサイズの制限:upload_max_filesize
ファイルサイズにクライアント側(cè)とサーバー側(cè)の両方の制限を設(shè)定します。 クライアント側(cè)の制限は、ユーザーエクスペリエンスの改善を提供し、最終的に拒否される大きなアップロードを防ぎます。 サーバー側(cè)の制限は、セキュリティとリソース管理に不可欠です。post_max_size
およびphp.ini
およびini_get()
ディレクティブをおよび - ファイルで調(diào)整するか、関數(shù)を使用して現(xiàn)在の値を取得し、それに応じてコードを適応させます。 代わりに、タイムスタンプ、ランダム文字列、またはハッシュ関數(shù)の組み合わせを使用して、一意のファイル名を生成します。これにより、ファイル名の衝突の潛在的な問(wèn)題が防止され、ユーザーが悪意のあるコードをファイル名に注入することを防ぎます。 このディレクトリには、適切なアクセス許可があり(Webサーバーでのみ書(shū)き込み可能)、古い一時(shí)ファイルを定期的にクリーンアップしてください。これにより、Webブラウザを介してファイルへの直接アクセスが防止されます。
- エラー処理:ファイルサイズの制限、無(wú)効なファイルタイプ、またはディスクスペースの問(wèn)題などの問(wèn)題を優(yōu)雅に処理する包括的なエラー処理を?qū)g裝します。ファイルアップロードには以下が含まれます
- ファイルタイプのスプーフィング:ユーザーは、ファイル拡張子を変更して悪意のあるファイルを偽裝します。 予防:上記のように、
finfo
またはgetimagesize()
でサーバー側(cè)の検証を使用します。 予防: - ファイルパスを厳密に検証およびサニタイズし、パスの構(gòu)築におけるユーザーが提供するデータの使用を回避します。 パスを正規(guī)化し、ディレクトリのトラバーサル攻撃を防ぐためになどの関數(shù)を使用します。 予防:ユーザー入力がファイルの含有に直接影響を與えることを許可しないでください。
realpath()
コードインジェクション: - ユーザーは、サーバーによって実行される悪意のあるコードを含むファイルをアップロードします。 予防:アップロードされたファイルを直接実行しないでください。 代わりに、タイプに応じてファイルを適切に処理します(例:畫(huà)像のサイズ変更、ドキュメント変換)。 予防:厳格なファイルサイズの制限とレート制限を?qū)g裝します。 監(jiān)視サーバーリソースの使用法。 予防:
- ウェブサイトに表示する前に、ユーザーがサプセルしたデータを常に消毒および脫出してエスケープします。 クライアント側(cè)のチェックはユーザーエクスペリエンスを改善しますが、セキュリティに頼らないでください。 < ファイルのバイナリデータを調(diào)べて、MIMEタイプを決定します。 畫(huà)像の寸法とMIMEタイプを返します。
-
$_FILES['file']['size']
:この変數(shù)には、アップロードされたファイルのサイズがバイトに含まれています。この値を定義された制限と比較してください。 -
ini_set()
ini_get()
/:upload_max_filesize
これらの関數(shù)を使用して、post_max_size
およびphp.ini
ディレクティブを ファイルで管理します。 これらの制限がアプリケーションとサーバーのリソースに適していることを確認(rèn)してください。
の両方の両方の組み合わせ:
$finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($_FILES['file']['tmp_name']); if ($mime_type != 'image/jpeg' && $mime_type != 'image/png') { // Handle invalid file type }
セキュリティと効率を確保するためにアップロードされたファイルをPHPで取り扱うためのベストプラクティスは何ですか?メンテナビリティ:- フレームワークまたはライブラリを使用します。
- PHPフレームワーク(Laravel、Symfony、Codeigniterなど)または専用ファイルアップロードライブラリを使用することを検討してください。これらは、多くの場(chǎng)合、組み込みのセキュリティ機(jī)能を提供し、アップロードプロセスを合理化します。 入力検証と消毒:
- 処理前に、ファイル名、タイプ、サイズを含むすべてのユーザーサプリッシュされたデータを常に検証および消毒します。制限。これにより、ファイルのより良い組織と管理が可能になります。 一意のファイル名:
- 予測(cè)可能なファイル名に関連する競(jìng)合とセキュリティリスクを防ぐための一意のファイル名を生成します。成功したアップロード、障害、エラーなど、ファイルアップロードイベント。これは、デバッグ、監(jiān)査、およびセキュリティ監(jiān)視に役立ちます。 コンテンツセキュリティポリシー(CSP):
- XSSの脆弱性を緩和するための堅(jiān)牢なCSPを?qū)g裝します。ガイドラインでは、PHPファイルアップロードシステムのセキュリティと効率を大幅に改善できます。セキュリティは進(jìn)行中のプロセスであり、進(jìn)化する脅威に適応するために継続的な警戒と更新が必要であることを忘れないでください。
-
以上がPHPにSecureファイルアップロードを?qū)g裝するにはどうすればよいですか?の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

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

人気の記事
Oguri Cap Build Guide |かなりのダービーズメソム
2週間前
By Jack chen
Agnes Tachyonビルドガイド|かなりのダービーズメソム
1週間前
By Jack chen
砂丘:目覚め - 高度な惑星科醫(yī)クエストウォークスルー
3週間前
By Jack chen
すべての日付:ダークとハーパーの関係ガイド
4週間前
By Jack chen

ホットツール

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

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

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

ホットトピック
Gmailメールのログイン入り口はどこですか?
8636
17


Java チュートリアル
1783
16


CakePHP チュートリアル
1725
56


Laravel チュートリアル
1577
28


PHP チュートリアル
1441
31

