华 晨 ,施化吉
(江苏大学 江 苏 镇 江 2 12013)
HTML5是继HTML4.01,XHTML 1.0和DOM 2 HTML后的又一个重要版本,旨在消除Internet程序对 Flash,Silverlight,JavaFX一类浏览器插件的依赖。除了原先的DOM接口,HTML5增加了更多API,如:本地音频视频播放;硬件加速;本地运行(即使在 Internet连接中断之后);从桌面拖放文件到浏览器上传;语义化标记。随着万维网联盟于2008年1月第1份HT ML5草案的发布,HTML5开启了WEB应用的新时代,各大著名IT公司相继推出了支持新的网页格式的IT产品。HT ML5与之前的版本相比,最为显著的特点是为开发者提供了一个不再依靠插件和扩展的完整应用平台。现在使用HT ML5规范的各种WEB应用方兴未艾,势不可挡。它展现出来的许多新特性在改变WEB世界同时也对网络安全带来了许多新挑战[1-2]。
HTML5在废除了一些旧标签的同时也增加了一些新标签来增强网页的表现性能。但这同时也给攻击者带来了新的机会。
一些xss filter如果建立了一个黑名单的话,则可能不会覆盖到HTML5新增的标签和功能,从而发生XSS。
例如
[3]
这段远程加载视频的代码成功的绕过了XSS Filter。
我们对此攻击的防御方式是,对前端或者后端的XSS Filter进行优化,添加过滤规则或者黑名单。
1)
在HTML5中专门为
Sandbox属性可以通过参数来支持更精确的控制。如表1所示。
有的行为,如”弹出窗口”,即使设置了allow-scripts,也是不允许的。毫无疑问,sandbox属性极大地增强了应用iframe的安全性。
表1 Sandbox属性参数Tab.1 Sandbox attribute parameters
2)HTML5中为标签定义了一个新的Link Type:noreferrer属性。
标签指定了noreferrer后,浏览器在请求该标签指定的地址时将不再发送Referer(header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理)。
这个属性需要开发者手动的添加到页面标签中,这样可以保护敏感信息和隐私。
浏览器实现的同源策略(Same Origin Policy简称SOP)限制了脚本的跨域请求。指一个域的文档或脚本,不能获取或修改另一个域的文档的属性。也就是Ajax不能跨域访问,Web资源访问的根本策略都是建立在SOP基础上的。但互联网的发展趋势是越来越开放的,因此跨域访问的需求也变得越来越迫切。但同源策略给web开发者带来了许多困扰,因此web开发者不得不用jsonp、iframe、flash socket解决跨域问题。
后来出现了CORS-CrossOrigin Resources Sharing,也即跨源资源共享,它定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。简言之,CORS就是为了让AJAX可以实现可控的跨域访问而生的。示意图如图1所示。
图1 跨域请求的访问过程Fig.1 Cross-domain access to process the request
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。它是非常有用的,但同时也存在风险。因为它完全是一个盲目的协议,只是通过HTTP头来控制。因此它可能产生以下一些风险:
1)恶意跨域请求
即便页面只允许来自某个信任网站的请求,但是它也会收到大量来自其他域的跨域请求。这些请求有时可能会被用于执行应用层面的DDOS攻击,并不应该被应用来处理。
例如,考虑一个搜索页面。当通过'%'参数请求时搜索服务器会返回所有的记录,这可能是一个计算繁重的要求。要击垮这个网站,攻击者可以利用XSS漏洞将Javascript脚本注入某个公共论坛中,当用户访问这个论坛时,使用它的浏览器重复执行这个到服务器的搜索请求。或者即使不采用跨域请求,使用一个目标地址包含请求参数的图像元素也可以达到同样的目的。如果可能的话,攻击者甚至可以创建一个WebWorker执行这种攻击。这会消耗服务器大量的资源。
2)HTTP头只能说明请求来自一个特定的域,但是并不能保证这个事实。因为HTTP头可以被伪造。
所以未经身份验证的跨域请求应该永远不会被信任。如果一些重要的功能需要暴露或者返回敏感信息,应该需要验证Session ID。
3)第三方有可能被入侵
举一个场景,FriendFeed通过跨域请求访问 Twitter,FriendFeed请求tweets、提交tweets并且执行一些用户操作,Twitter提供响应。两者都互相相信对方,所以FriendFeed并不验证获取数据的有效性,Twitter也针对Twitter开放了大部分的功能。
但是当如果Twitter被入侵后:
FriendFeed总是从Twitter获取数据,没有经过编码或者验证就在页面上显示这些信息。但是Twitter被入侵后,这些数据就可能是有害的。
或者FriendFeed被入侵时:
Twitter响应 FriendFeed的请求,例如发表 Tweets、更换用户名甚至删除账户。当FriendFeed被入侵后,攻击者可以利用这些请求来篡改用户数据。
所以对于请求方来说验证接收的数据有效性和服务方仅暴露最少最必须的功能是非常重要的。
针对以上的安全漏洞,可以采取下面的防范手段
1)不信任未经身份验证的跨域请求,应该首先验证Session ID或者Cookie。2)通过多种条件屏蔽掉非法的请求,例如HTTP头、参数等。3)对于请求方来说验证接收的数据有效性,服务方仅暴露最少最必须的功能。
postMessage允许每一个window(包括当前窗口、弹出窗口、iframe等)对象往其他的窗口发送文本消息,从而实现跨窗口的消息传递。这个功能是不受同源策略限制的。如果messaging可以接收任何来源的信息,此页面有可能会被攻击;另外postMessage不通过服务器,如果不经过验证和过滤,可能成为XSS注入点。例如如下代码没有对输入数据进行验证和清洗,攻击者完全可以构造恶意的data来注入页面DOM,构造 XSS 攻击,形如“>”等。
worker.addEventListener(‘message’,function(e){
document.getElementById(‘test).innerHTML=e.data;
},false);在使用postMessage()时,有两个安全问题需要注意
1)在接收窗口验证Domain,甚至验证URL,以防止来自非法页面的消息。
2)使用postMessage时需要对信息进行安全检查;另外不要使用innerHTML,现代浏览器提供了textContent属性,可以帮助对HTML标签进行过滤。
WebStorage,可以为用户创建本地存储,减轻服务器端的压力[4-5]。例如LocalStorage可以长期存储数据,极大的解决了之前只能用Cookie来存储数据的容量小、存取不便、容易被清除的问题。Web Storage分为Session Storage和Local Storage。Session Storage关闭浏览器就会失效,而Local Storage则会一直存在。Web Storage就像一个非关系型数据库,由key-value对组成,可以通过JavaScript对其进行操作。
LocalStorage的API都是通过Javascript提供的,这样攻击者可以通过XSS攻击窃取信息,例如用户token或者资料。攻击者可以用下面的脚本遍历本地存储。
[html]view plaincopy
if(localStorage.length){
for(I in localStorage){
console.log(i);
console.log(localStorage.getItem(i));
}
}
现在对于WebStorage攻击的防御措施主要是以下两点:
1)数据放在合适的作用域里
例如用户sessionID就不要用LocalStorage存储,而需要放在sessionStorage里。而用户数据不要储存在全局变量里,而应该放在临时变量或者局部变量里。
2)不要存储敏感的信息
因为我们总也无法知道页面上是否会存在一些安全性的问题,一定不要将重要的数据存储在WebStorage里[6-7]。
HTML5是互联网未来的大势所趋。随着浏览器开始支持越来越多的HTML5功能,攻击面也随之产生了新的变化。攻击者可能用HTML5的一些新标签和新功能来绕过一些未及时更新的防御方案。所以开发人员应该充分的了解HTML5的新特征,同时对应用安全性做一个评估。最后让HTML5展现它精彩的魅力,为开发者和广大的用户带来新的体验。
[1]王荣国.HTML5带来的WEB应用变革及安全问题研究[J].电脑开发与应用,2012(7):65-66.WANG Rong-guo.WEB application research HTML5 brings change and security issues[J].Development and Application of Computer,2012(7):65-66.
[2]树子.HTML5:看到10年后的互联网[J]互联网天地,2010(2):74-75.SHU Zi.HTML5:See the Internet 10 years later[J]Internet World,2010(2):74-75.
[3]高攀,施蔚然.深入分析HTML 5在信息安全上的优化[J].信息安全与技术,2012(8):83-84,87.GAO Pan,SHI Wei-ran.HTML 5 optimized in-depth analysis on information security[J].Information Security and Technology,2012(8):83-84,87.
[4]刘斌.HTML5-未来网络应用的核心技术研究[J]自动化与仪器仪,2010(4):30-31.LIU Bin.HTML5-Future research on core technology network applications[J]Automation and Instrument Instrument,2010(4):30-31.
[5]安靖,刘志.HTML5对web应用产生的影响及安全问题研究[J]信息网络安全,2011(11):79-80.AN Jing,LIU Zhi.Effects and safety issues arising from HTML5 for web applications[J]Information Network Security,2011(11):79-80.
[6]吴翰清.白帽子讲Web安全[M].北京:电子工业出版社,2012.
[7]周艳平,胡乃平.基于Web的计算机控制技术远程仿真系统开发[J].工业仪表与自动化装置,2010(3):112-115.ZHOU Yan-ping,HU Nai-ping.Development of remote simulation system for computer control technology based on Web[J].Industrial Instrumentation&Automation,2010(3):112-115.