Web2.0时代下浏览器的安全研究
仇昱
摘要:文章重点描述了在Web2.0的时代背景下,浏览器应用的安全问题,也给出了常用的基于浏览器端的攻击原理以及解决办法,以保证浏览器端应用的安全。
关键词:Web2.0;浏览器;攻击;安全威胁
如今使用的Web开发技术,都是采用的Web2.0技术规范。对于其前身Webl.O技术规范来讲,其是最新的一类互联网应用技术的集合,从内部主要的内容到外部的应用都发生了巨大改变。毫无疑问,Web2.0的核心技术是Ajax。Ajax技术是现今大部分Web浏览器所采用的技术集合,所有使用Ajax技术的Web网页,其内容可以直接快速地更新,而不需要進行页面刷新等多余的操作;也可以将改变后的信息,不通过任何的操作直接发送到服务器上;甚至还可以借助客户端机器上的浏览器,直接响应从服务器端的JavaScript处理。Web应用采用了Ajax技术后,网络上数据的交互变得更少了,Web服务器处理数据交互所花费的时间,也变得更短了,并且用户明显感觉到响应请求的速度更快了,加强了用4本Web2.0技术的快速发展和运用,极大地提高了客户端的交互能力,从而使得今后的Web系统将大量运用Ajax和JavaScnpt等技术。这些技术的运用,势必使很多基于逻辑层上的业务全部都转到了客户端,从而让整个Web应用系统暴露出一些严重的安全威胁,极大地提高用户个人隐私泄漏的风险[1]。
1XSS攻击1.1XSS攻击的涵义
所谓XSS就是人们经常讨论的跨站脚本攻击。这种既热门又不太受重视的Web攻击方式却在当下极为流行,让人防不胜防,成为浏览器领域里的一大威胁。这种攻击方式主要作用于某些单一的社交网络服务(SocialNetworkingSenaces,SNS)网站域,其原理是:非法用户利用浏览器在解析Web页面的时候,会不加思索地执行页面中的代码,从而使得非法者故意向Web页面中加入一些非法的指向恶意链接的超级文本标记语言(HyperTextMarkupLanguage,HTML)标签或者是Java脚本代码。当黑客利用这种攻击方法向可信的原网页链接中注入指向恶意的链接代码的时候,只要用户点击此链接,内嵌程序就会被激活,并在受害者的电脑上自动运行,从而引导受害者执行不安全的操作,导致用户的敏感数据被偷走。
XSS攻击可以让用户泄露的敏感数据有:(1)盗取各类用户账号及密码,黑客通过利用XSS攻击,盗取用户的网站认证Cookie,利用窃取的Cookie,黑客可以在社交网络平台上得到用户的网络控制;(2)获取企业数据的控制能力,包括对企业敏感数据的读取、篡改、添加和删除;(3)窃取企业具有重要商业价值的信息;(4)非法转移用户财产,站点挂马和强制发送毫无意义的电子邮件;(5)能够控制其他受害者的计算机,向其他站点的网站进行攻击[2]。
1.2XSS攻击的防范
诸如此类的危害,唯一能完全杜绝XSS攻击的方法,就是禁用脚本、图片等标签,显然这是不靠谱的。在保证页面内容丰富的前提之下,可以采用以下措施来预防XSS攻击,尽量减少XSS造成的危害。
1.2.1输入检测
这就意味着要对用户所输入的全部数据进行检测,过滤掉能够引起脚本注入的特殊字符;或者在编写HTML文档的时候,过滤掉有关脚本等字样的关键字;或者在录入数据的时候,将其数据长度限制固定住,同时也要考虑到恶意攻击者,会使用其他数据的进制编码,来进行数据录入。因此,在要对用户录入的数据,进行输入校验的时候,同时也要想到在输入数据的时候,入侵者会想方设法地绕开美国信肩、交换标准代码(American Standard Codefor Information Interchange,ASCII),而采用其他进制编码。
1.2.2输出编码时要加密
如果要将用户录入的数据输出到目标页面中,只要在其输出之前利用第三方编译工具,首先分析这些数据;然后使用加密程序,对这些数据进行加密处理;最后将加密好的数据,再输出到目的页面中。这样,即便是用户编写一些HTML的脚本,但是通过第三方编译工具的解析,也可以转变成了普通的字符,而不会转换成为目的页面的HTML代码的一部分,在浏览这样的页面时就不会执行此类代码,从而提高了数据的安全性。
1.2.3Cookie要进行必要的防盗
对于储存在用户本地客户端上的数据而言,Cookie则采取以下的措施进行必要的防盗。首先,要最大限度地避免在受害者本地客户端上的Cookie中泄露隐私,如用户名、密码等;其次,可以使用MD5算法对用户的本地客户端的Cookie信息进行多次哈希散列加密后存储;再次,将Cookie和IP地址进行绑定,这是为了防止重放攻击,还可以防止攻击者冒充正常用户的身份。
1.2.4严格限制URL的访问
在执行页面脚本代码的过程中,配置一个拦截器,判断其有没有权限访问这个ACTION,没有的话直接跳转到指定的可信页面。这样在执行链接跳转的时候,就不会跳转到其他非法且可疑的恶意页面上。
1.2.5用户应该注意的事宜
对于普通的网络应用用户来讲,只要做到以下3点就能避免XSS攻击。首先,不要轻易相信任何电子邮件和网页广告中的不安全、不可靠或是可疑的链接。此类链接很有可能就会引起反射型的XSS攻击,这样会允许用户访问一些不安全的网页,并导致敏感信息泄漏。其次,脚本应该在不必要的情况下禁止自动运行。再次,使用一些具有XSS筛选的浏览器,这些浏览器将会提示并阻止页面中的XSS注入。
2CSRF攻击
2.1CSRF攻击的涵义
CSRF全称Cross-siterequestforgery,中文名是跨站请求伪造,同时也可以被称为“OneClickAttack”或是“Session Ridmg”,而CSRF和XSRF是它的缩写形式。其使用冒名顶替的方式,向受害者发送被信任用户的请求,利用受信任的网站,诱导受害者进行非法操作,进而获取受害者的敏感信息。
浏览器的跨站点请求是合法的,很难在这个级别的浏览器上防止CSRF攻击,所以CSRF攻击比起XSS更具有危害性。相对于CSRF攻击的防御来看,目前主要是从服务器端和客户端两个方面来防御。但从防御的效果来看,从服务器端来防御的效果比在客户端的效果要好很多,如今一般的CSRF防御绝大部分是在服务器端进行。
2.2CSRF的防御
现今有很多技术都可以在服务器端和客户端上防御CSRF攻击,但总体思路是类似的,就是在客户端上添加一伪随机数,再在服务器端进行验证。
2.2.1Cookies散列
Cookies散列是所有表单都包含相同的伪随机值,这个方法可能是最简单和最快捷的解决方法。因为攻击者是不可能、也无法获得被攻击者的Cookies中的内容,那么与表单相关的数据也就无法构建了,也导致相应的数据表单构建失败。向表单里添加哈希散列值,用来验证这是否是用户发送的请求,然后在服务器端执行哈希值(Hash)验证。
2.2.2验证码
这个方法是在用户每次提交数据的时候,会要求用户填写一个图片上随机产生的一组字符串。该解决方案可以彻底解决CSRF攻击。然而,就个人而言,似乎使用不是很好,验证码图片在使用时,会涉及一个名为MHTML的Bug,可能会在某些版本的MicrosoftIE中受到影响,除此以外其也会降低用户的体验。
2.2.3One-TimeTokens
One-TimeTokens是指一次性令牌,不同形式包含不同的伪随机值。如果需要实现一次性令牌,则需要了解并行会话的兼容性。如果用户在网站上一次性打开两种不同的表单,CSRF的防御保护就不应影响其对任何形式的提交。考虑到每个形式表单加载时发生的情况,并且站点生成伪随机值以覆盖先前的伪随机值。因为所有其他表单都包含非法伪随机值,用户可能会成功提交其最终被打开的表单,所以必须注意所有的操作,应该保证CSRF的防范措施不影响使用多个浏览器窗口浏览网页或标签浏览器[3]。
3Clickjacking攻击
3.1ClickJacking攻击的涵义
Clickjacking又是一种不容忽视的Web攻击方式,俗称点击劫持。由于这种攻击方式要求与用户互动不停地互动,因此增加了其攻击成本,但实际上却又的的确确可以应用到欺诈、钓鱼等Web攻击中来。
Clickjacking攻击是一种“伪装”攻击,采用视觉欺骗的手段来达到获取敏感信息的一种方法。准确来说,通过视觉上的欺骗,使得用户原本要点击A,但事实上却点击的是B,导致最终的结果是点击B之后达到了某种恶意的目的。其基本的实现原理是:在HTML中使用多个或单个透明的、不可见的嵌入式的框架,覆盖在原始网页的顶层,然后诱使受害者在该页面上进行操作。此时,用户将处于未知的状态,并单击包含透明内联框架的页面。通过调整内置框架页面的位置,可以欺骗受害者点击内置框架页面上的某些功能按钮。这样,通过诱使受害者进行一系列复杂的操作后,攻击者可以获得想要的信息,这种攻击更加具有隐蔽性和欺骗性。当前,唯一的办法是禁用浏览器的脚本和插件功能。
3.2Clickjacking的其他形式
万变不离其宗,Clickjacking的其他形式都是由最基本的文档中的文档出发,点击劫持(Clickjacking)发展出许多不同的“变种”。比如:攻击者能借助Flash动画,来实施的点击劫持;甚至还能借助图片覆盖,来实施的欺诈攻击;最令人叹为观止的应该是拖拽劫持和数据窃取了。攻击者尝试各种手段诱使受害者从隐藏的不可见的iframe中拖出或拉出攻击者想要获取的数据,然后进入另一个页面中,此时这个页面攻击者可以控制,从而达到窃取数据的目的。
这里有一个针对Gmail的验证性测试的典型示例。其大致过程是:通过设计一个海豹顶球的小游戏,每次用户点击小球并拖拽到海豹头顶上时,都会触发相应的行为,这里在海豹和小球的顶部分别都隐藏了一个不可见的嵌入式的iframe,然后使用GetData方法获取数据,当用户拖拽小球的时候,实际上是点中了隐藏在iframe中的数据;当用户停止拖拽小球,此时就将数据也放在了隐藏的iframe当中,从而就完成了数据窃取的过程。
4结语
Ajax,JavaScript以及网络服务是Web2.0应用的3项重要的技术向量,随着这些技术的应用,基于这些技术的攻击方式层出不穷,也越来越“猥琐”,单一的防御措施也显得越来越脆弱。而忽视这些问题,下一个“泄密门”就离你不远了。应对这些新的攻击方式最好的方法是增加Web2.0的安全意识以及提高代码操作的安全性和系统配置的安全性。
[参考文献]
[1]周景平.从“泄密门”谈浏览器安全[J].程序员,2012(3):45-46.
[2]金山.物聯网信息安全与隐私保护研究[J].计算机光盘软件与应用,2013(16):38.
[3]何鹏飞.在大数据时代下IE浏览器安全漏洞与防范措施[J].黑龙江科技信息,2016(25):200.