PHP セキュリティ ガイド: パス トラバーサルおよび任意のファイル アップロードの脆弱性の防止
はじめに:
インターネットの急速な発展に伴い、PHP は非常に人気のある Web 開発言語として、さまざまな Web サイトや Web サイトで広く使用されています。アプリケーションは開発中です。ただし、PHP の柔軟性とオープン性により、ハッカーに脆弱性を悪用する機会も与えられます。この記事では、パス トラバーサルの脆弱性と任意のファイル アップロードの脆弱性という 2 つの一般的なセキュリティ脆弱性に焦点を当て、対応する予防策を提供します。
1. パス トラバーサルの脆弱性
パス トラバーサルの脆弱性とは、攻撃者が URL パラメーターを変更して、指定されたパス範囲から飛び出し、システム内の機密ファイルにアクセスすることを意味します。以下は一般的なコード例です。
$file = $_GET['file']; include '/path/to/files/' . $file;
攻撃者は、ファイル パラメータを「../config.php」として渡すことにより、/config.php などの機密ファイルにアクセスする可能性があります。パス トラバーサルの脆弱性を防ぐには、次の措置を講じる必要があります。
$file = $_GET['file']; if (!preg_match('/^[a-zA-Z0-9]{1,20}.(jpg|png|gif)$/', $file)) { die('Invalid file name'); }
$file = $_GET['file']; $basePath = '/path/to/files/'; $fullPath = realpath($basePath . $file); if ($fullPath === false || strncmp($fullPath, $basePath, strlen($basePath)) !== 0) { die('Invalid file path'); }
2. 任意のファイル アップロードの脆弱性
任意のファイル アップロードの脆弱性とは、攻撃者がアップロード機能を使用して悪意のあるファイルをサーバーにアップロードし、その中の悪意のあるコードを実行することで、サーバーまたは機密情報の取得。任意のファイル アップロードの脆弱性を防ぐための対策は次のとおりです。
$fileType = $_FILES['file']['type']; $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; if (!in_array($fileType, $allowedTypes)) { die('Invalid file type'); }
$fileName = $_FILES['file']['name']; $allowedExtensions = ['jpg', 'png', 'gif']; $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION); if (!in_array($fileExtension, $allowedExtensions)) { die('Invalid file extension'); }
$filePath = $_FILES['file']['tmp_name']; $fileContent = file_get_contents($filePath); if (strpos($fileContent, 'malicious code') !== false) { die('Invalid file content'); }
結論:
パストラバーサルの脆弱性と任意のファイルアップロードの脆弱性は、PHP 開発プロセスで発生しやすいセキュリティ問題です。これらの脆弱性は、ユーザー入力の厳密なフィルタリングと検証、およびファイルの種類、拡張子、およびファイルの内容のチェックによって効果的に防止できます。同時に、PHP の公式セキュリティ発表や最新のセキュリティ修正に細心の注意を払い、PHP のバージョンを適時に更新することも、システムのセキュリティを保護するための重要な対策です。
以上がPHP セキュリティ ガイド: パス トラバーサルおよび任意のファイル アップロードの脆弱性の防止の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。