第6章 HTML 5 安全

6.1 HTML 5新标签

6.1.1 新标签的XSS

HTML5定义了新的标签、新的事件,这就有可能带来新的XSS***。所以黑白名单需要时常更新。

6.1.2 iframesandbox

iframesandbox属性,就是html5安全中很重要的组成部分部分。于此同时还带来了一个新的mime类型,text-html/sandboxed

html5页面中,可以使用iframesandbox属性,比如:,sandbox后面如果不加任何值,就代表采用默认的安全策略,即:iframe的页面将会被当做一个独自的源,同时不能提交表单,以及执行javascript脚本,也不能让包含iframe的父页面导航到其他地方,所有的插件,如flash,applet等也全部不能起作用。简单说iframe就只剩下一个展示的功能,正如他的名字一样,所有的内容都被放入了一个单独的沙盒。

sandbox属性可以通过参数来支持更加精确的控制,有以下几个值可选择:

q  allow-same-original:允许同源访问

q  allow-top-navigation:允许访问顶层窗口

q  allow-forms:允许提交表单;

q  allow-script:允许执行脚本。

 参考:http://www.html5china.com/manual/html5/html5_iframe.htm

              http://www.cnblogs.com/yuzhongwusan/archive/2011/11/17/2252208.html

 

6.1.3 link types: noreferrer

HTML5标签定义了一个link types: noreferrer。标签指定了noreferrer后,浏览器在请求指定的地址时将不再发送Referer

6.1.4 canvas的妙用

这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API展现给客户端JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。

可以使用在线破解验证码。

参考:http://www.jb51.net/html5/71804.html

6.2 其他安全问题

6.2.1 cross-origin resource sharing

《白帽子讲WEB安全》学习笔记之第6章 HTML 5 安全_第1张图片

6.2.2 postMessage——跨窗口传递消息

HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输(Cross Document Messaging),Internet Explorer 8, Firefox 3,Opera 9, Chrome 3 Safari 4都支持postMessage

该方法可以通过绑定windowmessage事件来监听发送跨文档消息传输内容。

postMessage允许每一个window(包括当前窗口,当初窗口,inframe等)对象往其他窗口发送文本消息,从而实现跨窗口的消息传递。这个功能不受同源策略的限制。

使用postMessage时,有两个问题需要注意:

q  在必要是,可以接收窗口验证Domain,设置验证url,以防止来之非法页面的消息。这实际上是在代码中实现一次同源策略的验证过程。

q  根据“secure By Default”原则,在接收窗口不应该新人接收的消息,需要对消息进行安全检测。

6.2.3 web storage

Web Storage实际上由两部分组成:sessionStoragelocalStorage sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。 localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

优势:

q  存储空间:存储空间 更大:IE8下每个独立的存储空间为10M,其他浏览器实现略有不同,但都比Cookie要大很多。

q  服务器:存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一并发送的服务器,这对于本地存储的数据是一种带宽浪费。而WebStorage中的数据则仅仅是存在本地,不会与服务器发生任何交互。

q  接口:更多丰富易用的接口:WebStorage提供了一套更为丰富的接口,使得数据操作更为简便。

q  存储空间:独立的存储空间:每个域(包括子域)有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混乱。