HTML5安全

1.新标签的XSS
HTML5定义了很多新标签、新事件,这有可能带来新的XSS攻击。
一些XSS Filter如果建立了一个黑名单的话,则有可能就不会覆盖到HTML5新增的标签和功能,从而避免发生XSS。
在百度空间做一次测试,使用的是HTML5中新增的标签,这个标签可以在网页中远程加载一段视频。与标签类似的还有标签,用于远程加载一段音频。
测试如下:
HTML5安全
成功地绕过了百度空间的XSS Filter:
HTML5安全

HTML5新增的一些标签和属性,是得XSS等web攻击产生了新的变化,为了总结这些新变化,有安全研究者建立了一个HTML5 Security Cheatsheet项目,如图所示:
HTML5安全

2.iframe的sandbox

标签一直以来都为人所诟病。挂马、XSS、ClickJacking等攻击中都能看到它不光彩的身影。浏览器厂商也一直再想办法限制iframe执行脚本的权限,比如跨窗口访问会有限制,以及IE中的标签支持security属性限制脚本的执行。 在HTML5中,专门为iframe定义了一个新的属性,叫sanbox。使用sanbox这一个属性后,标签加载内容将被视为一个独立的“源”,其中的脚本将被禁止执行,表单被禁止提交,插件被禁止加载,指向其他浏览器对象的链接也会被禁止。sanbox属性可以通过参数来支持更精确的控制。以下有几个值可以选择:
  • allow-same-origin:允许同源访问;
  • allow-top-navigation:允许访问顶层窗口;
  • allow-forms:允许提交表单;
  • allow-scripts:允许执行脚本;
    可有的行为即便是设置了allow-scripts,也是不允许的,比如“弹出窗口”。
    毫无疑问,iframe的sanbox属性将极大的增强应用使用iframe的安全性。