我们正在为HTML5游戏设计在线游戏。用户可以上传包含其游戏的zip文件。
在上传时,服务器将解压缩zip文件并将每个文件循环检查,将其扩展为白名单,以便:
(必须在导出这些文件的游戏编辑器中制作游戏)。这可以防止人们上传拉链,服务器端脚本文件等等。
然后将游戏转移到我们的静态无cookie域(scirra.net)。当我们的scirra.com页面上播放游戏时,游戏将显示在指向scirra.net域的iframe中。这可以防止恶意JS访问scirra.com cookie。
这种iframe技术和白名单是否足够全面以防止任何恶意行为?请注意,我们无法真正筛选每个JS文件,因此我们应该假设人们会尝试上传恶意JS。
答案 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沙箱属性:
请注意,它目前仅适用于Chrome和Opera。这允许您指定一些限制功能。
然而,就我们的问题而言,我们已经废弃了这个想法并且已经决定,因为我们处于拥有游戏创建程序的有利位置,我们可以简单地让用户上传保证安全的Json数据我们主持核心引擎功能。
我们可以手动审查和批准任何插件使用,这比手动批准每个游戏要小得多。