Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iFrame中安全地执行HTML5/Javascript_Javascript_Security_Html_Iframe - Fatal编程技术网

在iFrame中安全地执行HTML5/Javascript

在iFrame中安全地执行HTML5/Javascript,javascript,security,html,iframe,Javascript,Security,Html,Iframe,我正在寻找开发一个网站,以举办HTML5游戏。由于这些游戏有机会包含恶意javascript,我想知道如何设置一个安全的环境来托管它们 似乎用iframe嵌入游戏是答案,但我对网站开发相对较新,所以有一些问题: 有没有一种简单的方法可以在同一个域上安全地托管游戏,或者 游戏是否必须托管在不同的域中,然后嵌入到iframe中,这样它就不能与父文档交互 如果游戏是在另一个域上执行的,它会以任何恶意方式与该域进行交互吗 跨站点脚本编写和cookie的过度范围将是这里的一个大问题。利用浏览器的同源策略

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

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

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

  • 游戏是否必须托管在不同的域中,然后嵌入到iframe中,这样它就不能与父文档交互

  • 如果游戏是在另一个域上执行的,它会以任何恶意方式与该域进行交互吗


跨站点脚本编写和cookie的过度范围将是这里的一个大问题。利用浏览器的同源策略将是一种有价值的方法来捍卫这一点

  • 确保您的站点从其他域提供给贡献者应用程序。(例如,
    coolgames.com
    vs
    mycolgames.com
    )-这会将您的代码的源代码范围与它们的源代码范围分开
  • 确保每个不同的贡献者的应用程序/游戏来自一个唯一的子域(例如,
    bob.mycolgames.com
    dave.mycolgames.com
    )-这将有助于分离不同开发者的来源。每个人都需要小心,千万不要将Cookie的范围限定在
    .mycolgames.com
    上,否则他们会过度暴露自己
您可能还希望利用现代浏览器中的新支持,进一步保护自己的应用程序。这将另外有助于防止

关于iFrame:

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


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

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

Second-经过短暂的搜索,我发现了
iframe沙盒
属性

TLDR-它使开发人员能够声明哪些安全选项将应用于iframe,从而允许浏览器定义定制的限制范围

所以。。我发现了一篇很棒的文章,它给出了这个特性使用的真实示例,并给出了一些清晰的解释(阅读更多关于这个主题的内容)。简言之:

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

安全选项包括:

  • 允许表单允许表单提交
  • 允许弹出窗口允许弹出窗口 (window.open()、showModalDialog()、target=“\u blank”等)
  • 允许指针锁定允许(意外!)指针锁定
  • 允许相同来源 允许文档保持其来源;从中加载的页面 将保留对该来源数据的访问权限
  • 允许脚本允许JavaScript执行,还允许功能 自动触发(因为通过 JavaScript)
  • 允许顶部导航允许文档跳出 通过导航顶级窗口来创建框架
例如:

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

还值得一提的是,此安全功能得到了高度支持(用于救援)


快乐阅读/编码。。。愿安全部队与您同在:)

谢谢!关于子域的信息特别有用。谢谢。我能问一下你最后一句话“我个人会……”是什么意思吗?“你的意思是将网页重定向到游戏所在的网站上吗?”马修·斯考克说,我在打字前就在想。点击劫持的主要风险来自于有人将你的网站植入他们的网站。将其他人的内容放入自己网站的iframe中,不应使您面临太多额外的风险。但我想,完全可以避免使用任何跨域iFrame是很容易的。问题是,我不能在页面上添加广告之类的元素,甚至不能在界面上添加很多元素。我有没有可能收到你的电子邮件?我真的很想更深入地讨论这个问题,并得到澄清。如果你不介意的话,我会非常感激。iframe+secure=问题始终…请阅读这里的一些想法@DmitryBoyko谢谢链接。非常有用。但是,除了使用iframe之外,我还有什么其他选择呢?:)