安全测试之CSRF漏洞

1203 篇文章 11 订阅
682 篇文章 3 订阅

1.CSRF介绍

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种通过伪造用户请求来实现恶意操作的攻击方式。攻击者利用用户在被攻击网站的登录凭证冒充用户提交操作,而不是直接窃取数据。攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。攻击可以用各种方式,如图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。CSRF通常是跨域的,因为外域通常更容易被攻击者掌控。但是如果本域下有容易被利用的功能,比如可以发图和链接的论坛和评论区,攻击可以直接在本域下进行,而且这种攻击更加危险。

2.CSRF漏洞的产生原因

CSRF(Cross-Site Request Forgery)是一种常见的Web攻击方式,攻击者可以利用用户已经登录了的身份,通过伪装成正常的请求来执行一些恶意操作。下面将介绍CSRF的产生原因、危害、类型以及如何防御。

CSRF攻击的三个条件:
 1.用户已经登录了站点 A,并在本地记录了 cookie
 
 2.在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B(B 站点要求访问站点A)。
 
 3.站点 A 没有做任何 CSRF 防御

3.CSRF漏洞的危害

1.利用用户的身份执行一些恶意操作,如删除、修改或者添加数据等

2.窃取用户的个人信息,如用户名、密码等

3.窃取用户的资金,如进行转账等

4.CSRF漏洞类型

1.GET方式的CSRF攻击:攻击者可以通过图片或者链接等方式,向网站发起GET请求,从而伪装成正常的请求来执行一些恶意操作。

2.POST方式的CSRF攻击:攻击者可以通过表单提交等方式,向网站发起POST请求,从而伪装成正常的请求来执行一些恶意操作。

5.CSRF漏洞防御方案

验证HTTP Referer字段:在服务端验证请求的来源是否合法,可通过HTTP请求头中的Referer字段来进行验证。但是该方法有一定的局限性,如Referer的判断逻辑写的不严密等情况容易被攻破。

使用Token并进行验证:在服务端生成一个Token,并将该Token置于HTTP请求中,当服务端接收到请求时,验证Token的合法性。常见的Token有Synchronizer Token Pattern和Double Submit Cookie Pattern两种方式。

在HTTP头中自定义属性并验证:将Token放置于HTTP头中自定义的属性里,并在服务端进行验证。但是该方法的局限性非常大,不适用于所有请求,且对于没有进行CSRF防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为XMLHttpRequest请求,这样几乎是要重写整个网站,代价无疑是不能接受的。

客户端防御:通过创建客户端工具来保护用户不受此种攻击。现有的工具RequestRodeo通过在客户和服务器之间充当代理来防止CSRF攻击。如果RequestRodeo发现了一个它认为是非法的请求,它会从该请求剥离验证信息。虽然这种方式在很多情况下都能有效,但是它具有一些局限性。具体地说,当客户端使用了SSL认证或者使用JavaScript生成部分页面时,它就不起作用了。

综上所述,要防御CSRF攻击,需要综合考虑服务端和客户端两方面的防御策略,其中服务端的防御效果较好。常见的防御策略包括验证HTTP Referer字段、使用Token并进行验证、在HTTP头中自定义属性并验证以及客户端防御。

END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值