【转载】HTML5有效提升iFrame安全性 新增Sandbox属性

标签: HTML5 技术博文 HTML5热点关注 | 发表时间:2012-07-05 04:42 | 作者:HTML5研究小组
分享到:
出处:http://www.mhtml5.com

HTML 5将针对iframe元素增加sandbox属性,可以防止不信任的Web页面执行某些操作。HTML 5规范的编辑Ian Hickson谈到了sandbox的好处,它可以防止如下操作:

  • 访问父页面的DOM(从技术角度来说,这是因为相对于父页面iframe已经成为不同的源了)
  • 执行脚本
  • 通过脚本嵌入自己的表单或是操纵表单
  • 对cookie、本地存储或本地SQL数据库的读写

HTML 5的修订历史页面还提到了sandbox的其他特性:

  • 禁用插件
  • 禁止其他浏览上下文的导航
  • 禁止弹出窗口和模式对话框
  • iFrames因安全问题而臭名昭著,这主要是因为iFrames常常被用于嵌入第三方内容,而后者则可能会执行某些恶意操作。
  • sandbox通过限制被嵌入内容所允许的操作而提升iFrames的安全性。这种方式将沙箱内容与父页面进行了分离,因此限制了被嵌入内容的权限。

与sandbox一起出来的还有其MIME类型:text/html-sandboxed。Hickson说到:

  • 使用HTML5构建下一代的Web Form
  • HTML5标准最新技术预览
  • HTML5特性增强 Adobe发布AIR2.0测试版本
  • HTML5网页3D技术标准发布 无需插件即可..
  • HTML5 File API初探 支持文件拖放上传功..

text/html-sandboxed MIME类型确保用户不会访问到不可信的内容。它包含两部分内容:首先,如果用户直接访问页面时,浏览器不可以渲染那些具有text/html- sandboxed MIME类型的页面。目前所有浏览器都支持这一点,这些浏览器会下载页面的标记但不会渲染页面;其次,支持sandbox属性的浏览器需要渲染具有 text/html-sandboxed MIME类型的iframes(但会受到sandbox属性中所设定的权限限制)目前为止,还没有浏览器实现这一点,Google Chrome也是如此(它会渲染父页面,但却下载iframe内容而非在iframe中对其进行渲染)。因此目前还没法使用该项技术,除非Google更新Chrome以支持这一点(从理论上来说,其他的浏览器厂商在实现了对sandbox属性的支持后就会实现该技术,让我们拭目以待吧)。

目前,只有Google Chrome 4.0使用了sandbox,Firefox、IE8和Safari都还没有实现这一点,但相信不久之后这些浏览器都会实现的。围绕着HTML 5 <video>元素发生了很多事情,Google通过H.264标准对其进行实现,而其他浏览器则使用了不同的标准或是干脆还没有实现。但这种情况不会发生在这里,因为每个浏览器都可以在内部自由决定如何实现sandbox。但即便是明天所有的主流浏览器都采用了sandbox,众多的开发者和内容管理者也不能立刻就使用它,因为还有那么多的遗留浏览器会忽略掉该属性,因此稳妥的办法还是采取常规的安全手段来保护iFrames。

转载自: http://www.lamppr.com/node/924

 

相关 [html5 iframe sandbox] 推荐:

【转载】HTML5有效提升iFrame安全性 新增Sandbox属性

- - HTML5研究小组
HTML 5将针对iframe元素增加sandbox属性,可以防止不信任的Web页面执行某些操作. HTML 5规范的编辑Ian Hickson谈到了sandbox的好处,它可以防止如下操作:. 访问父页面的DOM(从技术角度来说,这是因为相对于父页面iframe已经成为不同的源了). 通过脚本嵌入自己的表单或是操纵表单.

iframe子父页面调用

- - CSDN博客Web前端推荐文章
1、iframe子页面调用 父页面js函数. 子页面调用父页面函数只需要写上window.praent就可以了. 子页面取父页面中的标签中的值,比如该标签的id为“test”,则:. 但是我在chrome浏览器下却发现此方法无效了. 查了半天才了解,在chrome 5+中,window.parent无法在file://协议中运行,但是发布了之后http://协议下是可以运行的.

JavaScript Iframe 自动适应

- - ITeye博客
场景:Iframe嵌入flash,希望flash能随着页面的resize而resize. 首先导入JQuery框架,并设置iframe的scrolling=“auto”,这样的话可以自动的出现滚动条. 然后添加window的resize事件.  这样的话,每次浏览器resize的话,都会对iframe重新设置height,从而得到iframe resize的效果.

iframe post提交数据

- - Web前端 - ITeye博客
对于iframe默认get提交 需要进行post数据的大量提交,给找到外国网站的简单例子如: <form action="iframe.php" target="my-iframe" method="post">. <iframe name="my-iframe" src="iframe.php"></iframe> 因为我项目用到的是 页面用的tab 样式(如何实现tab样式切换这里不做说明),嵌入的是三个页面iframe,需要在切换的时候更改target指定iframe名字,为了验证是否可行,只好试下,不然无别的办法.

IOS学习之IOS沙盒(sandbox)机制和文件操作(一)

- - CSDN博客推荐文章
 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等.  1.1、每个应用程序都有自己的存储空间.  1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容.  1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行.

三谈Iframe自适应高度

- xiao - Koubei UED Team
一是因为这真的是一个被说烂的话题,二是因为太师傅在n年前就写过这篇再谈iframe自适应高度. 之所以再提该问题,是因为之前项目中确实遇到了这个问题的方方面面,有必要总结一下. 希望对各位有帮助,有错误请指正. 同域、子页面高度不会动态增加. 这种情况最简单,直接通过脚本获取字页面实际高度,修改iframe元素高度即可.

js打印iframe里面的内容

- - JavaScript - Web前端 - ITeye博客
有时候系统中会有这样的需求,打印某些页面里的某部分内容,采用iframe的contentWindow.print()方法可以实现. <input type="button" value="打印结果" />. 当点击按钮时可以实现打印功能. 这样能实现打印功能,但是存在一个问题,就是如果这个iframe所在的这个页面还有其他的内容,而我们只需打印iframe里的内容,我试过了,如果用google那么他可以正常打印,但是IE,360却会打印这个页面的所有内容,这是因为当前也页面的焦点是在整个文档的,所以我们只需要将焦点设为iframe的window对象就可以了.

jq 解决iframe高度自适应。

- - Web前端 - ITeye博客
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

jquery 实现iframe 自适应高度

- - Web前端 - ITeye博客
引用:http://www.cnblogs.com/luluping/archive/2009/04/17/1437843.html. 超级简单的方法,也不用写什么判断浏览器高度、宽度啥的. 一个是放在和iframe同页面的,一个是放在test.html页面的. iframe代码,注意要写ID. jquery代码1:.

动态创建iframe在IE下的两个问题

- - IT技术博客大学习
标签:   iframe. 表单提交到动态创建的iframe. 以下代码,一般用于在当前页 无刷新提交表单,其原理是把表单的target设为页面上某个iframe的id,使该iframe成为提交的目标,避免新开窗口或跳转. 但这段代码在 IE 6、7下无效. 以 innerHTML方式插入iframe,例如:.