安全地在iFrame中执行HTML5 / Javascript

时间:2012-01-12 11:46:42

标签: javascript html security html5 iframe

我正在寻找开发一个网站来举办HTML5游戏。由于这些游戏有机会包含恶意javascript,我想知道如何设置一个安全的环境来托管它们。

似乎用iframe嵌入游戏就是答案,但我对网站开发相对较新,所以有些问题:

  • 有一种简单的方法可以安全地在同一个域上托管游戏,或者......

  • 游戏是否必须托管在不同的域上,然后嵌入到iframe中,以便它无法与父文档交互?

  • 如果游戏是在另一个域上托管时执行的,它是否可以以任何恶意方式与该主机域进行交互?

2 个答案:

答案 0 :(得分:2)

跨域脚本和过度使用Cookie将是一个非常重要的问题。利用浏览器的同源策略将是一种有价值的方法来保护这一点。 ref1 ref2

  • 确保您的网站从其他域投放到贡献者应用。 (例如coolgames.com vs mycoolgames.com) - 这会将您的代码的原始范围与他们的原始范围隔离开来。
  • 确保每个不同的参与者都有来自唯一子域的应用/游戏(例如bob.mycoolgames.comdave.mycoolgames.com) - 这将有助于隔离不同开发者的来源。每个人都需要小心,不要将cookie范围扩展到.mycoolgames.com,否则他们会过度曝光。

您可能还希望通过在现代浏览器中使用新的Content Security Policy支持来进一步保护您自己的应用。这将有助于mitigateclickjacking attacks

关于iframe:

你能解释为什么你认为你需要使用iframe吗?良好的老式链接有什么问题?

如果图形设计规定必须使用iframe,您可以轻松地将所有嵌入式游戏设置为www.mycoolgames.com上的动态页面,在此页面中您不会保留任何敏感系统,数据或代码 - 保留所有用户身份验证系统,CMS系统和仅在* .coolgames.com上的应用程序上的数据

答案 1 :(得分:1)

第一-这是一个很好的问题!设计基于iframe的托管解决方案时,我在问自己同样的问题。

第二-简短搜索后,我遇到了iframe sandbox属性

TLDR -开发人员可以通过它声明将哪些安全选项应用于iframe,让浏览器定义量身定制的限制范围

所以..我找到了一篇很棒的文章,提供了有关此功能用法的真实示例,并提供了一些清晰的解释(有关此主题here的更多信息)。简而言之:

<iframe sandbox="security options goes here" src="your hosted page"></iframe>

安全选项为:

  • 允许表单允许提交表单。
  • 允许弹出窗口允许弹出窗口 (window.open(),showModalDialog(),target =“ _ blank”等)。
  • 允许指针锁定允许(惊奇!)指针锁定。
  • 允许相同来源 允许文件保持原点;从加载的页面 https://example.com/将保留对该原始数据的访问权限。
  • 允许脚本允许执行JavaScript,还允许使用以下功能: 自动触发(因为它们通过 JavaScript)。
  • 允许顶部导航允许文档脱离 通过浏览顶级窗口来显示框架。

例如:

<iframe sandbox="allow-scripts allow-popups" src="https://mywebsite.com/hosted_page"></iframe>

值得一提的是,该安全功能得到了高度支持(can I use用于救援)

快乐的阅读/编码...也许安全部队与您同在:)