徐淑芳 郭帆 游锦鑫
摘 要:跨站点请求伪造(CSRF)是一种对网站的恶意利用,它通过伪装来自受信用用户的请求利用受信任的网站,通过社会工程诱导受害者发送一些恶意请求。本文在阐述了CSRF的原理基础上,设计了一个基于服务器端CSRF防御模块,最后该方法与其他工具进行对比实验,结果表明,该方法可以更高效地防御CSRF攻击。
关键词:Web安全;CSRF攻击;过滤器
1 引言
随着Web技术的快速发展,人们进入了一个丰富多彩的虚拟互联网世界。各种基于Web应用的业务模式不断成熟,大量的安全漏洞和威胁也随之而来,基于Web的攻击称为恶意攻击者的主要方式和手段。目前主要的几种Web安全漏洞有跨站脚本攻击、SQL注入、CSRF、恶意文件执行等。其中CSRF是一种广泛存在的网络漏洞,由于很多安全工程师不太理解他的利用条件和危害,因此不予重视,但是CSRF在某些时候却能产生强大的破坏性。
2 CSRF攻击原理
3 基于服务器端CSRF防御模块的设计与实现
3.1 基于服务器端CSRF防御模块的设计
本文的工作以加入一次性令牌方法为基础,提出了基于服务器端添加CSRF防御模块,该模块在J2EE工作平台设计,使用J2EE编写Servlet过滤器和JavaScript技术实现。其设计思路是通过拦截服务器端和客户端的请求与响应信息,并对这些信息进行处理。实现CSRF防御模块功能,我们使用JavaScript脚本技术和Servlet过滤器来实现。当一个页面由服务器发送时,过滤器自动地注入JavaScript到页面中。该方法中,Token自动插入Html页面请求中。过滤器是Web程序中的可重用组件,作为客户端与目标资源间的中间层组件,用于拦截客户端的请求与相应信息。当Web容器收到一个客户端请求时,将判断此请求是否与过滤器对象相关联,如果关联,则将这一请求交给过滤器进行处理。此外,在网络安全漏洞检测系统也经常用到过滤器作为辅助模块。
接下来我们来描述整个CSRF防御流程。
(1)首先,用户登录后,发送页面请求到服务器,在这之前先经过FCSRF过滤器拦截再转发到服务器;(2)服务器发送响应页面,FCSRF过滤器收到响应后对响应页面插入脚本标签,再转发到用户浏览器端;(3)页面达到浏览器端后,脚本标签对页面表单插入Token操作;(4)用户提交表单时页面信息与Token值一同提交,提交到服务器前,过滤器先拦截用户请求,并检查Token是否存在,如果和当前会话保存的Token相匹配时,请求去除Token参数后被转发到服务器;如果Token丢失或和当前会话保持的Token值不同时,请求被认为可能存在CSRF漏洞,请求去除cookies后并跳转到错误页面,提示请求被拒绝。
3.2 基于服务器端CSRF防御模块的实现
该设计使用JDK6.0和Java EE6.0的開发环境,利用Servlet过滤器对客户端和服务器端之间的请求和响应拦截并修改插入FCSRF脚本标签,JavaScript动态创建的请求的处理使用了jQuery1.9.1在脚本部分添加,运用事件代理机制实现对动态创建的请求添加Token。
动态创建的请求是在运行在客户端脚本所构造的请求,在页面加载完后由JavaScript操作DOM动态创建产生的。jCSRF方法是通过在代理协议中添加jCSRF-java脚本标签方法[9]实现对动态创建请求添加令牌。
4 实验及结果比较
同时对jCSRF和CSRF Guard两种工具做同样的测试,并与之对比。实验在Windows7平台下进行,其他主要使用的软件为WebScarab、Tomcat6.0.37和Firebug1.12.7。CSRFTestPHP根据三种工具部署实验环境,并使用Firebug查看各处理表单页面源代码,记录防御工具对不同的请求的Token参数的操作结果,总结数据如表2所示。
从表2测试结果中,可以看出本文设计的过滤器模块对动态创建的请求添加了参数Token,能够实现有效请求提交,对CSRF漏洞有防御作用,CSRFGuard对这类请求无法添加Token值可能提交失败或遭到CSRF攻击,jCSRF对GET请求不做处理,不能起到完全防御工作。
此外,若是站点针对CSRF攻击采用了防御措施,如果站点存在XSS漏洞,XSS可以模拟客户端浏览器执行任意操作,那么这个方案就会变得无效。在XSS攻击下,攻击者完全可以请求页面后,获得页面内容里的Token值,然后再构造出一个合法的请求。因此,防御CSRF的同时需加强其他WEB安全漏洞。
5 结语
文中对CSRF已有的防御策略进行了总结研究,提出了一种新的基于服务器端构建过滤器模块程序来验证安全令牌。这对有效地防御WEB安全的CSRF攻击很有意义。该方案通过在服务器端添加过滤器模块,并对请求进行过滤,对没有Token或Token不匹配的请求视为CSRF攻击而阻止,能够有效的防御CSRF漏洞。并且CSRF攻击是一种隐蔽性强、破坏力强的网络安全漏洞,在通过积极有效的针对性防御外,还需要增强其他Web安全漏洞防御,例如XSS、点击劫持等。因此,安全界应该更加关注CSRF漏洞,实现更加安全优化的防御手段。
[参考文献]
[1]陈振.CSRF攻击的原理解析与对策研究[J].福建电脑,2009,25(6).
[2]刘梅,陈锦海,高扬,王骏,林超,张声杰.基于IMM-CSRF的多平台机动目标被动跟踪方法[J].系统工程与电子技术,2011,33(1):1-0007.