5

ユーザーが複数のファイルをアップロードし、それらの圧縮バージョンをダウンロードできるユーザー システム (php、apache) を実装しようとしています。(または圧縮ファイルをアップロードして、圧縮されていないファイルをダウンロードします)。

質問:これらの不明なファイルを圧縮/解凍するリスクはありますか? 言い換えれば、unix/php zip/unzip 操作はファイルをテキストのみとして扱うのでしょうか、それとも何らかの実行が発生する可能性がありますか?

この質問はすべての圧縮方法に関連しています。zip は単なる例です。

編集: @Alex Brown と @Parallelis は 2 つのリスクを書いたので、明らかに安全ではありません。不明なファイルの安全な圧縮/解凍を実装する方法について簡単な説明を投稿できますか?

4

3 に答える 3

2

私には合理的に思えます。いくつかの問題があるため、これを行うことはできません。それらのファイルがブートストラップ スクリプトである場合はどうなりますか? (さらに 2 つの問題については、Alex と Parallelis のコメントを参照してください)。

ソリューション:

  1. アップロード後にzipファイルをzipファイルとして保存する場合、zipには適切であるかどうかに関係なく多くのファイルが含まれている可能性があるため、追加の問題に直面します。その場合、ファイルのコンテンツのリストを取得して、フィールドに自動的に含めることができます。これにより、ファイルをダウンロードする人がファイルのコンテンツが有効かどうかを知ることができます。ClamAVなどと統合して、アップロードされたすべてのファイルをスキャンすることもできます。

    注: Google も同じことを行っており、アンチウイルス スキャナー プログラムを使用しています (これはもちろん一般には使用できません)。

  2. また、最初にファイルを一時ディレクトリに配置してから、その場所で zip_open を使用することもできます。OS レベルのコマンド (独自のリスクがあります) を使用して、実際に解凍せずにファイルの整合性を検証できます。このツールも同じことを参照できます。

于 2012-08-30T05:49:42.990 に答える