如何在java中保护文件上载

如何在java中保护文件上载,java,javascript,struts,xss,Java,Javascript,Struts,Xss,我正在使用java开发一个web应用程序,用户将上传一个zip文件。此文件将包含css文件、图像、javascript文件、flash文件等。zip文件将上载到tomcat的webapp目录中。目的是用户将皮肤作为zip文件上传,我的servlet将把它解压缩到webapp中的某个位置 我关心的是如何处理这里的安全问题。用户可以在js文件或其他文件中编写xss攻击代码。所有文件都在zip文件中。我可以检查zip文件的扩展名或mime类型。除此之外,我还可以采取哪些其他行动来防止任何形式的攻击。任

我正在使用java开发一个web应用程序,用户将上传一个zip文件。此文件将包含css文件、图像、javascript文件、flash文件等。zip文件将上载到tomcat的webapp目录中。目的是用户将皮肤作为zip文件上传,我的servlet将把它解压缩到webapp中的某个位置


我关心的是如何处理这里的安全问题。用户可以在js文件或其他文件中编写xss攻击代码。所有文件都在zip文件中。我可以检查zip文件的扩展名或mime类型。除此之外,我还可以采取哪些其他行动来防止任何形式的攻击。任何类型的示例,代码片段都将受到高度赞赏。

您的问题没有指定您将如何处理上传的内容,但如果您希望在您的网站上运行此功能,那么答案是您确实不希望人们能够上传自己的JavaScript。任何运行在您这边的外来代码都可能改变任何东西,并使您的站点以您无法承担责任的方式运行。只要读一读就能确信

通过删除
script
标记来清除所有HTML,以防止JavaScript执行,不允许自定义JavaScript,对于所有自定义需求,请遵循@greyfairer的建议,使用配置文件进行脚本检查


如果您担心您的用户将对您的网站做什么,请确保对上载文件的大小进行限制(请参阅web服务器文档)。

当您与“不安全”用户打交道时,存在一种难以降低到(我认为)可接受水平的内在风险,ie用户来自great big wild beyond,而不是那些拥有在服务器上放置任何类型文件的管理权限的用户。这里有这么多风险。好吧,那么你想检查来自.js文件和其他可能的攻击吗?我的第一个问题是,为什么不尝试使用一个具有命令行功能的病毒扫描程序来扫描文件,这样你就可以在上传文件时扫描每个文件,如果病毒扫描程序是不可能的话,也许可以看看VirusTotal.com的在线API扫描程序。但是,如果没有合适的启发式引擎,新的攻击可能会被编写出来并很容易通过。你确定需要它们才能上传javascript和flash文件吗?难道你不能设计一些他们可以上传的配置文件格式,并由你自己的代码来提供他们需要的任何东西吗?实际上,我这里的用户不是最终用户。此选项适用于网页设计师,他只能上传。但是她/他没有登录。如果在服务器端启用了标志,则上载UI将可见。大多数情况下,这将用于开发模式,而不是生产模式。虽然我想确保一些安全性,因为没有登录。这里“确保一些安全性”的快速而简单的方法是实现一个登录,并将该功能限制为经过身份验证的用户,因为他们似乎是众所周知的,是开发过程中涉及的网页设计师。当你可以将风险降低到可以接受的程度(如果出现问题,你知道谁负责)时,为什么要尝试降低高风险(与“任何人都可以上传”相关)?