DotNetZip を使用して、外部の (信頼できない) ソースからの zip ファイルを抽出しています。私の問題は、zip ファイル自体は数キロバイトになる可能性がありますが、解凍されたコンテンツはペタバイトになる可能性があることです。解凍する前に非圧縮サイズを確認するにはどうすればよいですか? これを確認して OutOfMemoryException を防ぐ確実な方法はありますか?
以下で提案されているように、それは ionic zip で行うことができます:
using (ZipFile zip = ZipFile.Read(zipFile))
{
// Option 2 - will need to sift through the mass of info
info = zip.Info;
foreach (ZipEntry e in zip)
{
long uncompressedsize = e.UncompressedSize;
// Option 1
totaluncompressedsize += uncompressedsize;
}
}
しかし、疑問が残ります:UncompressedSize
完全に信頼できるものですか? 誰かがこの情報を変更して、圧縮されていない小さなサイズとして表示することはできますか?