安全理论03 HTML5 安全

HTML5是W3C指定的新一代HTML语言的标准。

HTML新标签

新标签的XSS

HTML5定义了很多新标签、新事件、新属性,这有可能带来新的XSS攻击。

一些XSS Filter如果简历一个黑名单的话,则可能就不会覆盖到HTML新增的标签和功能,从而避免发生XSS。

为了总结新增的变化,有安全研究者建立了一个HTML5 Security Cheatsheet项目。

在HTML5中,专门为iframe定义了一个新的属性,叫sandbox。使用sandbox后,iframe标签加载的内容将被视为一个独立的“源”(参考同源策略),其中的脚本将被禁止执行,表单被禁止提交,插件被禁止加载,指向其他浏览对象的链接也被禁止。

sandbox属性可以通过参数来支持更精确的控制。

  • allow-same-origin:允许同源访问;
  • allow-top-navagation:允许访问顶层窗口;
  • allow-forms:允许提交表单;
  • allow-scripts:允许执行脚本。

有的行为,例如弹窗,即使设置了allow-scripts也是不被允许的。

在HTML5中为<a>标签和<area>标签定义了一个新的Link Types:noreferer。意味着,标签指定了noreferer后,浏览器在请求该标签指定的地址时,将不再发送referer。

Canvas的妙用

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

Canvas提供的强大功能,甚至可以用来破解验证码,最大的好处是可以在浏览器环境中实现在线破解,大大的降低了攻击门槛。

其他安全问题

Cross-Origin Resource Sharing

浏览器实现的同源策略限制了脚本的跨域请求。但互联网的发展趋势使得跨域访问的需求也变得越来越迫切。

假如从http://www.a.com/test.html发起一个跨域请求,请求的地址为http://www.b.com/test.php,如果服务器返回一个HTTP Header:

Access-Control-Allow_Origin: http://www.a.com

那么这个跨域请求会被通过,在这个过程中,http://www.a.com/test.html发起的请求还必须带上一个Origin Header

Origin Header用于标记HTTP发起的源,服务器通过识别浏览器自动带上的这个Origin Header,来判断浏览器的请求是否来自一个合法的源,这样,可以用于防范CSRF,并且不容易被伪造或清空。

如果跨域请求是下面这样设置的话是非常危险:

Access-Control-Allow_Origin: *

它将允许任意的跨域请求都被允许,等同于没有做跨域限制。

安全理论03 HTML5 安全

postMessage——跨窗口传递信息

postMessage允许每一个window(包括当前窗口、弹出窗口、iframes等)对象往其他的窗口发送文本消息,从而实现跨窗口的消息传递。这个功能是不受同源策略限制的。在使用postMessage函数时,需要注意两个安全问题:

  1. 在必要时,可以在接收窗口验证Domain,甚至验证URL,以防止来自非法页面的消息。这实际上是在代码中实现一次同源策略的验证过程。
  2. 在接收窗口不应该新人接收到的消息,而需要对消息进行安全检查。

使用postMessage也会使XSS Payload变得更加的灵活。

Web Storage

Web Storage分为两种:

  • Session Storage
  • Local Storage

Session Storage关闭浏览器就失效,而Local Storage会一直存在。

Web Storage像一个关系型数据库,由Key-Value键值对组成,可以通过JavaScript来操作。Web Storage也受同源策略的约束,每个域所拥有的信息只会保存在自己的域下。Web Storage让Web开发更加的灵活多变,也为XSS Payload提供了遍历,攻击者有可能将而已代码保存在Web Storage中,从而实现跨页面攻击。

当Web Storage中保存由敏感信息时,也会成为攻击的目标,而XSS攻击可以实现这一过程。

安全理论03 HTML5 安全

上一篇:linux下 nexus + docker 搭建.net core能使用的nuget服务器


下一篇:关于.net框架