CSRF 攻击

(1)概念

CSRF 攻击指的是 跨站请求伪造攻击 ,攻击者诱导⽤户进⼊⼀个第三⽅⽹站,然后该⽹站向被
攻击⽹站发送跨站请求。如果⽤户在被攻击⽹站中保存了登录状态,那么攻击者就可以利⽤
这个登录状态,绕过后台的⽤户验证,冒充⽤户向服务器执⾏⼀些操作。
CSRF 攻击的 本质是利⽤ cookie 会在同源请求中携带发送给服务器的特点,以此来实现⽤户
的冒充。

(2)攻击类型

常见的 CSRF 攻击有三种:
        1.GET 类型的 CSRF 攻击,⽐如在⽹站中的⼀个 img 标签⾥构建⼀个请求,当⽤户打开这
个⽹站的时候就会⾃动发起提交。
        2.POST 类型的 CSRF 攻击,⽐如构建⼀个表单,然后隐藏它,当⽤户进⼊页⾯时,⾃动
提交这个表单。
        3.链接类型的 CSRF 攻击,⽐如在 a 标签的 href 属性⾥构建⼀个请求,然后诱导⽤户去点
击。

(3)如何防御CSRF攻击?

CSRF 攻击可以使⽤以下⽅法来防护:
       1. 进⾏同源检测 ,服务器根据 http 请求头中 origin 或者 referer 信息来判断请求是否为允
许访问的站点,从⽽对请求进⾏过滤。当 origin 或者 referer 信息都不存在的时候,直接
阻⽌请求。这种⽅式的缺点是有些情况下 referer 可以被伪造,同时还会把搜索引擎的链
接也给屏蔽了。所以⼀般⽹站会允许搜索引擎的页⾯请求,但是相应的页⾯请求这种请
求⽅式也可能被攻击者给利⽤。( Referer 字段会告诉服务器该⽹页是从哪个页⾯链接过
来的)
        2.使⽤ CSRF Token 进⾏验证 ,服务器向⽤户返回⼀个随机数 Token ,当⽹站再次发起请
求时,在请求参数中加⼊服务器端返回的 token ,然后服务器对这个 token 进⾏验证。这
种⽅法解决了使⽤ cookie 单⼀验证⽅式时,可能会被冒⽤的问题,但是这种⽅法存在⼀
个缺点就是,我们需要给⽹站中的所有请求都添加上这个 token ,操作⽐较繁琐。还有⼀
个问题是⼀般不会只有⼀台⽹站服务器,如果请求经过负载平衡转移到了其他的服务
器,但是这个服务器的 session 中没有保留这个 token 的话,就没有办法验证了。这种情
况可以通过改变 token 的构建⽅式来解决。
        3.对 Cookie 进⾏双重验证 ,服务器在⽤户访问⽹站页⾯时,向请求域名注⼊⼀个
Cookie ,内容为随机字符串,然后当⽤户再次向服务器发送请求的时候,从 cookie 中取
出这个字符串,添加到 URL 参数中,然后服务器通过对 cookie 中的数据和参数中的数
据进⾏⽐较,来进⾏验证。使⽤这种⽅式是利⽤了攻击者只能利⽤ cookie ,但是不能访
问获取 cookie 的特点。并且这种⽅法⽐ CSRF Token 的⽅法更加⽅便,并且不涉及到分
布式访问的问题。这种⽅法的缺点是如果⽹站存在 XSS 漏洞的,那么这种⽅式会失效。
同时这种⽅式不能做到⼦域名的隔离。
在设置 cookie 属性的时候设置 Samesite ,限制 cookie 不能作为被第三⽅使⽤ ,从⽽可
以避免被攻击者利⽤。 Samesite ⼀共有两种模式,⼀种是严格模式,在严格模式下
cookie 在任何情况下都不可能作为第三⽅ Cookie 使⽤,在宽松模式下, cookie 可以被请
求是 GET 请求,且会发⽣页⾯跳转的请求所使⽤。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值