允许上传ZIP文件时要考虑的困难/问题是什么?


What are the difficulties/issues to consider when allowing ZIP file uploads?

我允许PDF文件上传到我的网站(PHP)。

我想提供的能力,也允许。zip文件,其中包含PDF文件在目录中,所以它是更容易为用户简单地压缩一个目录和上传一个文件,而不是上传多个zip文件单独。

对于那些在你的(PHP)网站上提供.zip文件上传功能的人来说,你面临的技术、安全和其他问题是什么?

要小心如何解压缩,您可能会发现自己消耗的资源远远超过预期。也许在打开包装之前,一些setrlimit(2)资源限制是明智的。

unzip(1)实用程序内置了几个很好的安全功能;-^命令行选项关闭控制字符过滤,所以确保你不要触摸这个:)和-:命令行选项允许愚蠢的路径名,如../../../../etc/passwd。确保你的版本至少是5.50,这样那些愚蠢的路径名在默认情况下是被禁止的。(不要使用命令行选项。我提到这些选项只是为了让您可以更容易地找到它们的文档。:)

如果你使用一个API,确保它有选项来防止这两种愚蠢的文件名

假设。zip最终被解压缩,你必须确保它们被解压缩的目录是客户端浏览器无法访问的(使用。htaccess或将其放置在web根目录之外),即使在这种情况下,我仍然会监控解压缩的内容,以确保它们不包含任何可能被证明有害的内容(php或服务器运行的其他文件,html欺骗)。

另一个问题是我猜upload_max_filesize设置在php.ini,你可以确保它可以设置足够大,以满足你的目的之前,你开始编码。

编辑:也阅读sarnold的回答;)

毫无疑问,php可以非常有效地处理zip文件。我能想到的困难/问题是,在访问文件时,我们需要先提取zip,然后检索实际需要的文件。由于这个原因,根据文件本身的大小,提取压缩文件可能会消耗额外的服务器时间。

其中,在上传过程中,我不认为zip类型有任何特别强调的困难或问题。