写点什么

HTML 5 通过 sandbox 属性提升 iFrame 的安全性

  • 2010-01-30
  • 本文字数:1422 字

    阅读完需:约 5 分钟

目前 Web Hypertext Application Technology Working Group (WHATWG)正与 W3C 通力合作建立 HTML 5 标准,在过去 3 个月中,该项工作已经进入到了 WHATWG 的“ Last Call ”阶段。在这期间,变化最大的一个特性就是 iframe 元素的 sandbox 属性。sandbox 属性可以防止不信任的 Web 页面执行某些操作。

HTML 5 规范的编辑 Ian Hickson谈到了sandbox 的好处,它可以防止如下操作:

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

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

  • 禁用插件
  • 禁止其他浏览上下文的导航
  • 禁止弹出窗口和模式对话框

iFrames 因安全问题而臭名昭著,这主要是因为 iFrames 常常被用于嵌入第三方内容,而后者则可能会执行某些恶意操作。sandbox 通过限制被嵌入内容所允许的操作而提升 iFrames 的安全性。这种方式将沙箱内容与父页面进行了分离,因此限制了被嵌入内容的权限。

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

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。

查看英文原文: The HTML 5 sandbox Attribute Improves iFrame Security

2010-01-30 00:063719
用户头像

发布了 88 篇内容, 共 269.0 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂

阿里云云效

阿里云 云原生

智能可观测护航“双十一”,电商零售高峰稳健冲刺!

博睿数据

想管理好团队?一定要三“靠”三“不靠”

敏捷开发

管理 团队建设 企业管理 团队协同

用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成

阿里云云效

阿里云 云原生

博睿数据登顶中国应用性能管理及可观测性APMO市场份额第一!

博睿数据

电商开发者必备:深入解析微店商品详情API接口

代码忍者

API 接口 pinduoduo API

技术干货丨助力企业研发数字化转型,Altair全新仿真管理平台解决方案

Altair RapidMiner

数据分析 仿真 智能制造 altair SPDM

多分支组网解决方案:SD-WAN

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

如何使用Python开发1688商品详情API接口?

科普小能手

API 1688 Python开发 API 接口 1688商品详情接口

寻找 2300 名编程青铜一起写代码,学会就送包!

阿里巴巴云原生

阿里云 云原生

走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂

阿里巴巴云原生

阿里云 云原生

用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成

阿里巴巴云原生

阿里云 云原生

官方带队实测,阶梯式解锁飞桨框架3.0能力新特性,轻松上手!

飞桨PaddlePaddle

百度 飞桨AI

反问面试官:如何实现集群内选主

不在线第一只蜗牛

Linux 面试 运维

寻找 2300 名编程青铜一起写代码,学会就送包!

阿里云云效

阿里云 云原生

如何在低代码平台中高效实现CI/CD:从零开始到全面自动化?

天津汇柏科技有限公司

低代码

淘宝/天猫商品详情API返回值深度剖析与实战运用:聚焦taobao.item_get_desc

代码忍者

API 接口 pinduoduo API

ERP系统怎么选?手把手教你选对ERP!

积木链小链

企业管理 ERP

抛开偏见,一文全新认识低代码平台

武汉万云网络科技有限公司

淘宝商品详情数据接口(taobao.item_get)

tbapi

淘宝API接口 淘宝商品详情接口 天猫商品详情接口

Java实现随机抽奖的方法有哪些

不在线第一只蜗牛

Java Python

京东API深度解析:精准呈现商品全网价格数据于详情页

代码忍者

API 接口 pinduoduo API

低代码开发平台,低成本快速搭建云MES系统

万界星空科技

低代码 低代码开发 生产管理系统 mes 万界星空科技

1688 API接口深度解析:商品详情、关键词搜索、店铺商品列表与拍立淘

代码忍者

API 接口 pinduoduo API

从校招生到项目经理,菜鸟如何开展项目管理

京东科技开发者

写一个Chrome浏览器插件

京东科技开发者

Node Exporter 可观测性最佳实践

观测云

Node Exporter

访问海外网站的网络工具: SD-WAN海外专线

Ogcloud

SD-WAN SD-WAN组网 SD-WAN国际专线 海外网络专线 跨国网络专线

HTML 5通过sandbox属性提升iFrame的安全性_安全_Abel Avram_InfoQ精选文章