允许用户上传HTML / JS文件的风险

时间:2011-11-22 14:26:14

标签: javascript security iframe whitelist

我们正在为HTML5游戏设计在线游戏。用户可以上传包含其游戏的zip文件。

在上传时,服务器将解压缩zip文件并将每个文件循环检查,将其扩展为白名单,以便:

  • html的
  • 的.js
  • .PNG
  • .JPG
  • .appcache
  • .M4A
  • .OGG

(必须在导出这些文件的游戏编辑器中制作游戏)。这可以防止人们上传拉链,服务器端脚本文件等等。

然后将游戏转移到我们的静态无cookie域(scirra.net)。当我们的scirra.com页面上播放游戏时,游戏将显示在指向scirra.net域的iframe中。这可以防止恶意JS访问scirra.com cookie。

这种iframe技术和白名单是否足够全面以防止任何恶意行为?请注意,我们无法真正筛选每个JS文件,因此我们应该假设人们会尝试上传恶意JS。

3 个答案:

答案 0 :(得分:4)

origin inheritance rules for iframes会阻止scirra.net iframe干扰scirra.com。

然而,这并不能阻止所有攻击。实际上,您正在引入存储的XSS漏洞。 XSS可用于引入基于浏览器的攻击,例如利用ActiveX组件中的缓冲区溢出。在Flash,Adobe阅读器或Microsoft Office中利用谬误。

您应该考虑在scirra.net内容上运行防病毒软件。虽然这不会阻止所有攻击。 ifram的页面可以重定向或引入包含恶意内容的另一个iframe。

正如Cheeksoft指出的那样。应用程序可以通过XSS相互影响。一个好奇的应用程序可以访问另一个应用程序offline storage或获取嵌入在另一个应用程序中的其他数据。强制每个应用程序拥有其子域将缓解此问题。您可以设置DNS记录,将* .scirra.net指向您的服务器,并在您的网络应用程序中处理域名。

答案 1 :(得分:1)

如何在您提供的游戏编辑器中加入一些筛选功能?筛选出对外部URL的引用,执行代码验证,检查编码等。

你必须锁定zip文件以防止篡改,但无论如何这可能是一个好主意。

答案 2 :(得分:0)

对于其他阅读此内容的人来说,有一个 experimental / beta iFrame沙箱属性:

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox

请注意,它目前仅适用于Chrome和Opera。这允许您指定一些限制功能。

然而,就我们的问题而言,我们已经废弃了这个想法并且已经决定,因为我们处于拥有游戏创建程序的有利位置,我们可以简单地让用户上传保证安全的Json数据我们主持核心引擎功能。

我们可以手动审查和批准任何插件使用,这比手动批准每个游戏要小得多。