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。

ios h5页面底部弹框安全区域颜色不一致_Web

1.4、Canvas

Canvas可以说是HTML 5中最大的创新之一。

不同于< img>标签只是远程加载一个图片,< canvas>标签让JavaScript可以在页面中直接操作图片对象,也可以直接操作像素,构造出图片区域。

canvas可以画图,写游戏,识别验证码等。

2、其他安全问题

2.1、Cross-Origin Resource Sharing

Origin Header用于标记HTTP发起的 “ 源 ”,服务器端通过识别浏览器自动带上的这个Origin,来判断浏览器的请求是否来自一个合法的 “ 源 ”。

ios h5页面底部弹框安全区域颜色不一致_Web_02

ios h5页面底部弹框安全区域颜色不一致_HTML_03

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也受到同源策略的约束,每个域所拥有的信息只会保存在自己的域下。