常见WEB漏洞:HTML5安全与防御
1、HTML5概述
HTML5 是定义 HTML 标准的最新的版本,5的原因是它是HTML的第五次重大修改,标准于14年10月29日完成。作为HTML的升级版,它有更大的技术集,引入了新的标签、属性、方法和功能等,允许更多样化和强大的网站和应用程序。
比如说新增了<section>, <article>, <nav>, <header>等标签,再比如说新增了现在比较流行的SVG的支持,还有比如新增了Web Storage本地存储等等,更多的HTML5新增的特性就需要大家自己进一步去了解了,具体可以参考:
https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/HTML5
安全问题一般都伴随着功能出现,所以HTML5的出现,自然而然伴随着功能就产生一些可以被利用的安全问题或者扩大了原来的一些攻击方法的攻击面或者攻击点;由于HTML5是Web标准,所以一些问题主要是集中在前端安全。
2 、新功能的引入带来的新的攻击
2.1 新标签、属性加入,拓宽攻击方法
新标签、属性的出现,对于前端攻击中基于标签、属性的一些攻击方法,比如XSS,等于多了一些新的黑名单绕过方式。最简单的方式就是特征识别,举个例子:这样一个XSS Payload:
<script>alert(0)</script>
假如WAF对这种常见的无用的HTML标签加入了黑名单,一旦触发就行拦截,那么我们就可以利用HTML的新标签,比如:
<video><source onerror="alert(1)">
利用video标签,如果WAF没有及时更新对这些HTML5标签的处理,那么就可以进行绕过。
我们也可以使用一些HTML5里出现的新属性,比如onformchange,当表单改变时触发事件,在注入点是表单结构的情况下来触发XSS。
防御方法主要是针对于WAF等防护类安全产品或者相关应用,还是要过滤、检测黑名单涵盖这些新的标签元素和属性。
2.2 CORS
CORS全称是CrossOrigin Resources Sharing,中文也就是跨源资源共享,CORS 的出现就是为了让AJAX可以实现可控的跨域访问而生的。
CORS主要是通过对被请求资源站点设置 Access–Control-Allow-Origin 的响应头来实现的,也就是比如:
a.com 需要通过ajax方式访问b.com的资源,那么就可以对b.com的HTTP 响应设置
Access–Control-Allow-Origin:http://a.com
这样来允许a.com的访问。
这类问题的防御其实也相对比较简单,比如对于跨域请求应该验证身份,验证数据有效性等,确实是正常用户的跨域请求,再进行对应处理。
2.3 Web Storage
开发者可以为应用创建本地存储,存储一些有用的信息。例如LocalStorage可以长期存储,而且存放空间很大,一般是5M,极大的解决了之前只能用Cookie来存储数据的容量小、存取不便、容易被清除的问题。
由于是浏览器本地存储,那么意味着一旦重要、敏感数据采用这种存储方式,而其API都是通过JavaScript提供的,这样攻击者可以通过XSS攻击窃取信息,例如用户token或者资料。
这里主要应该避免存储敏感数据,还有就是把对应的数据放在不同域里,比如会话ID应该存储在sessionStorage,相对于localStorage,sessionStorage会在浏览器窗口或者标签页关闭后删除。
2.4 WebSQL
主要Html5引入的本地数据库和查询,那么就会跟传统的SQL一样,比如存在一些注入的问题,跟localStorage一样一旦存储敏感数据可能存在敏感数据泄露的问题等;
那么对应的一些防御之道也是类似,比如过滤关键词等。