HTML5 安全
- 1、HTML 5新标签
- 1.1、新标签的XSS
- 1.2、iframe的sandbox
- 1.3、Link Types:noreferrer
- 1.4、Canvas
- 2、其他安全问题
- 2.1、Cross-Origin Resource Sharing
- 2.2、postMessage——跨窗口传递消息
- 2.3、Web Storage
HTML 5是W3C制定的新一代HTML语言的标准。
1、HTML 5新标签
1.1、新标签的XSS
如果XSS Filter使用的是黑名单,则可能不会覆盖到HTML 5新增的标签和功能,从而避免发生XSS。
比如新增的< video>、< audio>等标签。
1.2、iframe的sandbox
HTML 5中,专门为iframe定义了一个新的属性,叫sandbox。使用sandbox这一个属性后,< iframe>标签加载的内容将被视为一个独立的 “ 源 ”,其中的脚本将被禁止执行,表单被禁止提交,插件被禁止加载,指向其他浏览对象的链接也会被禁止。
sandbox属性可以通过参数来支持更精确的控制。有以下几个值可以选择:
❍ allow-same-origin:允许同源访问;
❍ allow-top-navigation:允许访问顶层窗口;
❍ allow-forms:允许提交表单;
❍ allow-scripts:允许执行脚本。
毫无疑问,iframe的sandbox属性将极大地增强应用使用iframe的安全性。
1.3、Link Types:noreferrer
HTML 5中为< a>标签和< area>标签定义了一个新的Link Types:noreferrer。标签指定了noreferrer后,浏览器在请求该标签指定的地址时将不再发送Referer。
1.4、Canvas
Canvas可以说是HTML 5中最大的创新之一。
不同于< img>标签只是远程加载一个图片,< canvas>标签让JavaScript可以在页面中直接操作图片对象,也可以直接操作像素,构造出图片区域。
canvas可以画图,写游戏,识别验证码等。
2、其他安全问题
2.1、Cross-Origin Resource Sharing
Origin Header用于标记HTTP发起的 “ 源 ”,服务器端通过识别浏览器自动带上的这个Origin,来判断浏览器的请求是否来自一个合法的 “ 源 ”。
2.2、postMessage——跨窗口传递消息
postMessage允许每一个window对象(包括当前窗口、弹出窗口、iframes等)往其他的窗口发送文本消息,从而实现跨窗口的消息传递。这个功能是不受同源策略限制的。
2.3、Web Storage
(1)为什么需要Web Storage
过去浏览器里能够存储信息的方法有以下几种:
- Cookie
- Flash Shared Object
- IE UserData
其中,Cookie保存登录凭证,其最大长度的限制决定了不可能在Cookie中存储太多信息。而Flash Shared Object和IE UserData则是Adobe与微软自己的功能,并未成为一个通用化的标准。因此W3C委员会希望能在客户端有一个较为强大和方便的本地存储功能,这就是Web Storage。
(2)关于Web Storage
Web Storage分为Session Storage和Local Storage。Session Storage关闭浏览器就会失效,而Local Storage则会一直存在。Web Storage是由Key-Value组成的,可以通过JavaScript对其进行操作。
使用方法:
- 设置一个值
window.sessionStorage.setItem(key,value);
- 读取一个值
window.sessionStorage.getItem(key);
Web Storage也受到同源策略的约束,每个域所拥有的信息只会保存在自己的域下。