写点什么

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:063793
用户头像

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

关注

评论

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

《解构领域驱动设计》-软件复杂度解析

珑彧

读书笔记 方法论 领域驱动设计 DDD 复杂

5A原则

穿过生命散发芬芳

1月月更

React源码分析(一)Fiber

flyzz177

React

React-Hooks源码深度解读

flyzz177

React

一文教会你mock(Mockito和PowerMock双剑合璧)

京东科技开发者

测试 powermock Mock pom 企业号 1 月 PK 榜

小心被坑死!如果你还在用 Zookeeper 做注册中心

风铃架构日知录

Java zookeeper 程序人生 后端 注册中心

LiveMe x TiDB丨单表数据量 39 亿条,简化架构新体验

PingCAP

#TiDB

Java高手速成 | 数据库实训:图书馆管理系统建模

TiAmo

数据库 管理系统 1月月更

谈谈你在面试中遇到的一面、二面、三面有什么区别?

风铃架构日知录

Java java面试 程序员面试 面试‘’ 面试流程

详解UDS CAN诊断:SecurityAccess Service(SID:0X27)

不脱发的程序猿

汽车电子 CAN ISO 14229 诊断和通信管理功能单元 SecurityAccess Service

2023-01-04:有三个题库A、B、C,每个题库均有n道题目,且题目都是从1到n进行编号 每个题目都有一个难度值 题库A中第i个题目的难度为ai 题库B中第i个题目的难度为bi 题库C中第i个题目

福大大架构师每日一题

算法 rust Solidity 福大大

Kubernetes 跨集群流量调度实战 :访问控制

Flomesh

Service Mesh 服务网格 服务网格

k8s 学习实战(一)

AiDaddy

k8s安装 kubenetes

深入react源码看setState究竟做了什么?

flyzz177

React

从recat源码角度看setState流程

flyzz177

React

群晖NAS设置Calibre个人电子图书馆

刘旭东

群晖 Calibre 个人图书

属于 PingCAP 用户和开发者的 2022 年度记忆

PingCAP

#TiDB

2022年人民满意手机银行服务白皮书

易观分析

金融 白皮书 手机银行 用户

ChatGPT 最近火得不要不要的

HoneyMoose

从源码角度看React-Hydrate原理

flyzz177

React

每个人都必须为2023年的十大基本技术趋势做好准备

超自动化

AI 超自动化

4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

HarmonyOS开发者

HarmonyOS

架构训练营模块三作业

现在不学习马上变垃圾

架构训练营10期

2022年11月中国网约车领域月度观察

易观分析

网约车 行业 打车

2022年中国证券类APP创新专题分析

易观分析

金融 证券 证券app

Reids的BigKey和HotKey

小小怪下士

Java redis 程序员

SPL 实现电力高频时序数据实时存储统计

石臻臻的杂货铺

SPL

TableLayout(表格布局)

芯动大师

Android Studio tablelayout 表格布局

ChatGPT 使用 API 进行 Postman 调用测试

HoneyMoose

看透react源码之感受react的进化

flyzz177

React

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