Web 应用程序允许用户上传文件。是否有必要通过防病毒软件扫描这些文件?
我想在两种情况下听到答案:
- 上传时不检查文件类型。它们存储在无法从 Internet 直接访问的文件夹中。文件没有执行权限。然后用户可以查询一些 url,文件将返回 Content-Disposition: 附件
- 上传时不检查文件类型。它的内容是用一些 HTML/XML/JSON/等解析的。解析器。解析文件后不存储在服务器上
Web 应用程序允许用户上传文件。是否有必要通过防病毒软件扫描这些文件?
我想在两种情况下听到答案:
在第二种情况下,我认为没有理由使用病毒扫描程序。反病毒中代码执行漏洞的可能性似乎比我的解析库中的漏洞更大。特别是如果解析库是用内存安全语言编写的。
在第一种情况下,我会使用防病毒软件,因为提供病毒文件供下载听起来不是一个好主意。人和自动网站声誉系统(例如谷歌安全浏览)都可能将病毒下载与损害其声誉的网站联系起来。
我可能仍然会提供这样的文件供下载,但只有在明确警告和用户确认之后。最好是防止机器人下载它的确认。
在场景 1 中,您可以放心地假设内容不会在服务器上执行,并且用户将被迫下载文件而不是在浏览器中查看它。从您的角度来看,这是相当安全的,因为您将检查文件的责任转移给了您的用户。
在场景 2 中,我肯定会通过 AV 运行它。您的解析器库可能存在漏洞,因此您肯定希望在将其交给库之前进行一些基本检查。
如果有人要求您在商业航班上携带密封包裹作为行李的一部分,您愿意吗?
即使您只是为用户提供一个存储库来存储他们自己的文件而不是重新发布上传的内容,接受任何扔到您的服务器上的东西都是鲁莽的。
然而,反病毒扫描并不是防范恶意软件的唯一方法 - 验证 mimetype 并使用无损转换方法在格式之间切换可以消除大部分威胁(例如,将 jpg 转换为 png,将 MSWord doc 转换为 pdf*)。如果您已经为文件实现了自己的解析器并且它是一种基本格式,例如 XML,那么您已经在验证内容 - AV 扫描可能是多余的。但像所有代码一样,它应该是安全的。
*) 但不使用 MSWord 进行转换!
上传时不检查文件类型。它们存储在无法从 Internet 直接访问的文件夹中。文件没有执行权限。然后用户可以查询一些 url,文件将返回 Content-Disposition: 附件
在发送附件之前进行扫描只是礼貌的做法,但有很多东西存储起来有问题,但可以很好地通过病毒扫描。
这可能有点偏执,但是如果您不会故意编写软件来让人们植入可以使您入罪的证据,请不要无意中编写这样做的软件。
您会记录关于上传者的哪些信息?您是否有敌人会将儿童色情或炸弹制造计划上传到您的服务器,然后向警方发送匿名提示?
上传时不检查文件类型。它的内容是用一些 HTML/XML/JSON/等解析的。解析器。解析后文件不存储在服务器上。
防病毒扫描程序在这里不太可能有帮助。和上面一样的问题。您是否可以检查从文件中提取的信息或证明您存储的任何信息都来自外部来源?