CSRF攻击与WAF防火墙


今天来说说“跨站请求伪造攻击(Cross-site request forgery)”。

跨站请求伪造攻击,简称CSRF攻击。与跨站脚本攻击(Cross Site Scripting,简称XSS)有点类似,其攻击的核心要素都是“欺骗”。区别在于XSS窃取了用户对网站的信任,CSRF则是窃取了服务器对用户浏览器的信任。

CSRF是如何进行攻击的?

较为典型的CSRF攻击例如“银行网站转账”攻击,用户登陆银行A网站完成转账操作后,在浏览器“身份”信息未失效前,攻击者通过某种手段诱使用户打开CSRF攻击B网站,此时B网站可以插入一条经过特殊构造的URL,其中包含A网站的地址与转账命令。而A网站的服务器此时检测到刚刚转完账的用户带着“身份”信息又来了,系统会判定这是本人在操作,同意本次的交易请求。用户在毫不知情的情况下,就被攻击者利用本地信息转走了存款。

CSRF造成的危害还有很多,攻击者能够“欺骗”受害用户完成该受害者所允许的任一状态改变的操作,比如:更新账号细节、完成购物、注销甚至登录等操作。CSRF攻击虽然隐秘,但Web应用防火墙(WAF)防御CSRF攻击有妙招!

WAF防火墙

大家都知道在HTTP报头中有一个Referer字段,字段中记录了HTTP请求的来源地址,正常情况下Referer字段应和请求的地址位于同一域名下。但如果是CSRF攻击传来的请求,Referer携带的地址则会是CSRF攻击网站的地址。

Web应用防火墙可通过验证用户HTTP请求的Referer字段实现对CSRF攻击进行抵御。如果发现访问网站的HTTP请求的Referer字段记录的URL并非原网站的URL,则判定发送该HTTP请求的用户可能遭受攻击者的CSRF攻击,根据CSRF策略的动作处理该HTTP请求。

“道”高一尺,“魔”高一丈?

验证Referer字段过于依赖浏览器发送正确的Referer字段,同时无法保证用户使用的浏览器没有安全漏洞影响导致Referer字段被篡改。

“魔”高一尺,“道”高一丈!

Web应用防火墙可为用户端设置一个伪随机数作为验证的Token信息,Token信息会随客户端提交的请求头传输到服务器进行校验,正常访问时,客户端浏览器可正常获取并传回此伪随机数,而在CSRF攻击中,攻击者无法获取此伪随机数的值,Web应用防火墙就会因校验Token的值为空或者错误,根据CSRF策略的动作处理该HTTP请求。


文章作者: AaronXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AaronXu !
评论
 上一篇
带小白10小时极速入门python 带小白10小时极速入门python
Python网上的资料非常多,有没有啥干货编程教程可以极速入门Python ,不需要那些唠唠叨叨的铺垫,直接给我开门见山能实用的代码例子。我翻了很久,终于在GitHub上找到了一个不错的资料,是一位资深的Python大神写的,非常赞!纯英语
下一篇 
使用Flask轻松实现炫酷数据可视化 使用Flask轻松实现炫酷数据可视化
Flask框架基本使用在开始可视化之前,先让大家对Flask有一个大概了解和基本使用 Flask和Django都是Python最常用的两个网站框架,其中Flask更加轻巧,精简,便捷。 本文也将使用Flask作为演示案例,下面教大家Flas
  目录