我想为基于网络的应用程序创建以下功能:
提取过程是否涉及任何安全问题?例如。上传文件(或准备好的档案文件)中包含恶意代码执行的可能性,还是?
答案 0 :(得分:7)
除了没有仔细实现缓冲区溢出之类的系统利用系统的可能性之外,如果你盲目地提取一个带有冗余模式的大文件(拉链炸弹)的精心设计的压缩文件,可能会出现问题。压缩版本非常小,但是当你提取时,它会占用整个磁盘,导致拒绝服务并可能导致系统崩溃。
此外,如果您不够谨慎,客户端可能会将带有服务器端可执行内容(.php
,.asp
,.aspx
,...)的zip文件放在内部,通过HTTP请求文件,如果配置不当,可能导致服务器上的任意代码执行。
答案 1 :(得分:3)
除了Medrdad的回答:托管用户提供的内容有点棘手。如果您正在托管一个zip文件,那么它可用于存储Java类文件(也用于其他格式),因此可以破坏“相同的原始策略”。 (有一个GIFAR攻击,其中zip附加到另一个文件的末尾,但不再适用于Java PlugIn / WebStart。)至少应检查图像文件它们实际上是图像文件。显然,网络浏览器存在缓冲区溢出漏洞存在问题,现在您的网站可能会被用来攻击您的访问者(这可能会让您不受欢迎)。您可能会发现一些客户端软件使用正则表达式来传递数据,因此可以执行图像文件中间的数据。 Zip文件可能有顽皮的文件名(例如,目录遍历../
和奇怪的字符)。
怎么做(不一定是详尽的清单):
ZipInputStream
进行解压缩,如果太大则停止。