PHP を使用したファイルの解凍: Segura アプローチ
ファイルの解凍は、Web 開発における一般的なタスクです。 system('unzip File.zip') コマンドを直接実行することは機能する可能性がありますが、URL パラメーターを使用してファイル名を指定するのは難しい場合があります。
URL パラメーターを使用する場合の落とし穴
提供されたコードの問題は、system('unzip $master.zip') コマンドで $master.zip を使用するときに発生します。 PHP の変数は、一重引用符 (') で囲まれた文字列内では補間されません。したがって、コマンドは unzip $master.zip を実行しようとしますが、これは意図したファイル名ではありません。
安全で効率的なソリューション
この問題を解決するには、PHP の圧縮ファイルを処理するための組み込み拡張機能を使用する必要があります。そのような拡張機能の 1 つが ZipArchive です。修正されたコードは次のとおりです。
<?php // Get the filename from the URL parameter $filename = $_GET["master"]; // Instantiate the ZipArchive object $zip = new ZipArchive(); // Open the zip file $res = $zip->open($filename); // Check if the zip file was opened successfully if ($res === TRUE) { // Extract the contents of the zip file to the current directory $zip->extractTo('.'); // Close the zip file $zip->close(); echo "$filename extracted successfully."; } else { echo "Could not open $filename."; } ?>
追加の考慮事項
$_GET 変数を介してユーザー入力を受け入れる場合、潜在的な悪意のある攻撃を防ぐために入力をサニタイズすることが重要です。ユーザーが送信したデータを PHP コードで使用する前に、必ず検証してフィルタリングしてください。
Zip ファイルと同じディレクトリに抽出する
必要な抽出場所が同じ場合zip ファイルが存在するディレクトリで、ファイルへの絶対パスを決定します。
// Get the absolute path to the zip file $path = pathinfo(realpath($filename), PATHINFO_DIRNAME); // Extract the zip file to the determined path $zip->extractTo($path);
これらの手法を使用すると、 PHP を使用してファイルを安全かつ効率的に解凍できます。ユーザーが送信したデータを扱うときは、常に入力検証とセキュリティ対策を優先することを忘れないでください。
以上がZipArchive を使用して PHP でファイルを安全に解凍するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。