PDF ファイルを自分のサイト (PHP) にアップロードすることを許可します。
ディレクトリに PDF ファイルを含む .zip ファイルも許可する機能を提供したいと考えています。これにより、複数の zip ファイルを個別にアップロードするのではなく、ディレクトリを圧縮して 1 つのファイルをアップロードするだけで済みます。
(PHP) Web サイトに .zip ファイルのアップロード機能を提供している方は、直面した技術的、セキュリティ、およびその他の問題は何ですか?
.zipが最終的に解凍されると仮定すると、解凍されるディレクトリがクライアントのブラウザから到達できないことを確認する必要があります(.htaccessを使用するか、Webルートディレクトリの外に配置します)。その場合でも、解凍された.zipの内容を引き続き監視して、有害であると判明する可能性のあるもの(phpまたはサーバーによって実行されるその他のファイル、html spoofs)が含まれていないことを確認します。
もう1つの問題は、php.iniのセットを推測しupload_max_filesize
ます。コーディングを開始する前に、目的に合わせて十分に大きく設定できることを確認できます。
編集:サーノルドの答えも読んでください;)
zipを解凍する方法に注意してください。予想よりもはるかに多くのリソースを消費していることに気付く可能性があります。おそらく、setrlimit(2)
解凍する前にいくつかのリソース制限が賢明でしょう。
unzip(1)
ユーティリティには、いくつかの優れた安全機能が組み込まれています。-^
コマンドラインオプションは制御文字フィルタリングをオフにするので、これに触れないように注意してください:)そして-:
コマンドラインオプションは。のようなばかげたパス名を許可../../../../etc/passwd
します。少なくともバージョン5.50を使用していることを確認してください。これにより、これらの愚かなパス名はデフォルトで禁止されます。(そして、そのコマンドラインオプションを使用しないでください。オプションについては、ドキュメントをより簡単に見つけることができるように説明します。:)
APIを使用する場合は、両方の種類のばかげたファイル名を防ぐオプションがあることを確認してください。
私の知る限り、phpはzipファイルをかなり効率的に処理できます。私が考えることができる困難/問題は、最初にzipを抽出する必要があるファイルにアクセスし、次に実際に必要なファイルを取得することです。そのため、ファイル自体のサイズによっては、zip を解凍すると、サーバー時間がさらに消費される場合があります。
zip
どこで、アップロード中に、タイプに特に重点を置いた問題や問題があるとは思いません。