APP下载

一种基于Apache的CSRF防御模块的实现

2017-10-13王马龙

网络安全技术与应用 2017年3期
关键词:页面用户

◆王马龙 刘 健



一种基于Apache的CSRF防御模块的实现

◆王马龙 刘 健

(四川大学计算机学院 四川 610065)

跨站请求伪造(CSRF)漏洞的存在十分广泛,而且是开放式web应用安全项目(OWASP)统计的Top 10 Web攻击列表中最具威胁的漏洞之一。目前最具代表性的两种CSRF防御工具是CSRFGuard[2]和jCSRF[3]。针对CSRFGuard会将JS动态创建的动态HTTP请求误认为是CSRF攻击;jCSRF以代理模式部署,会增大web服务器的响应时间这两大问题,本文通过重写XMLHttpRequest对象onsend的方法,向HTTP头注入CSRF防御Token,基于Apache web 服务器实现了一个CSRF防御模块mod_anticsrf,去除了代理的网络通信开销。实验结果表明,mod_anticsrf支持动态HTTP请求,且几乎不影响web服务器的响应时间。

CSRF;Apache;动态HTTP请求;性能

0 引言

跨站请求伪造(Cross-Site Request Forgery,CSRF)攻击是一种当今互联网上广泛存在的Web攻击。近几年来,CSRF在OWASP(Open Web Application Security Project)每年的十大安全漏洞中[1]始终能够稳居前列。它并不是一种新型的攻击,但是其攻击原理简单,极具破坏性。由于CSRF漏洞存在于大量的Web应用程序中,如果通过手动修改程序源代码的方式来修复漏洞,工作量将十分巨大。基于此,本文基于ApacheWeb服务器实现了一种CSRF防御模块。

1 CSRF防御工具现状

CSRFGuard[2]和jCSRF[3]都是基于一次性Token的方法实现的CSRF防御工具。CSRFGuard是由OWASP发布的CSRF防御技术。它是一个实现了 Token模式的JAVA类库[4],通过生成随机的Token,而攻击者无法构造有效请求,从而对CSRF攻击进行防御。它的缺点是:(1)只有Javaweb应用服务器能使用;(2)它使用JavaScript DOM注入Token的方法是在页面加载完后遍历页面所有元素,对“form”或“a”等元素或属性插入Token。因此,CSRFGuard比较适合处理静态页面。如果有表单在页面加载完后由JavaScript脚本动态创建,其提交的请求不能被CSRFGuard插入Token,相关页面的操作也可能因缺少Token被阻止或者可能遭受CSRF攻击。……

登录APP查看全文

猜你喜欢

页面用户
微信群聊总是找不到,打开这个开关就好了
大狗熊在睡觉
刷新生活的页面
关注用户
关注用户
关注用户
Camera360:拍出5亿用户
100万用户
如何获取一亿海外用户
同一Word文档 纵横页面并存