WEB安全(八)什么是CSRF攻击?为什么说Token可以防止CSRF攻击?

CSRF攻击概述

**CSRF(Cross Site Request Forgery)**是 跨站请求伪造

Cookie 有一个过期时间,在这段时间内,Cookie 是存储在客户端的,当再次访问相同的网站时,浏览器会自动在 HTTP 请求中自动带上该网站用户登录后的 Cookie

CSRF 攻击也正是利用这点,借用用户的 Cookie,去执行非用户本意的操作。

举个例子:

小明登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接,结果发现自己的账户少了 10000 元。这是这么回事呢?原来黑客在链接中藏了一个请求,这个请求直接利用小明的身份给银行发送了一个转账请求,也就是通过你的 Cookie 向银行发出请求。

<a src=http://www.mybank.com/Transfer?bankId=11&money=10000>科学理财,年盈利率过万</>

所以单纯的使用Cookie,会受到CSRF攻击。

那为什么说Token可以防止CSRF攻击呢?

token 验证的规则是,服务器从请求体(POST)或者请求参数(GET)中获取设置的 token,然后和 Cookie 中的 token 进行比较,一致之后才执行请求。

而 CSRF 攻击只是借用了 Cookie,并不能获取 Cookie 中的信息,所以不能获取 Cookie 中的 token,也就不能在发送请求时在 POST 或者 GET 中设置 token,把请求发送到服务器端时,token 验证不通过,也就不会处理请求了。

所以,token 可以防止 CSRF 攻击。

CSRF防护策略

CSRF通常从第三方网站发起,被攻击的网站无法防止攻击发生,只能通过增强自己网站针对CSRF的防护能力来提升安全性。

CSRF有两个特点:

  • CSRF(通常)发生在第三方域名。
  • CSRF攻击者不能获取到Cookie等信息,只是使用。

针对这两点,我们可以专门制定防护策略,如下:

  • 阻止不明外域的访问
    • 同源检测,即直接禁止外域(或者不受信任的域名)对我们发起请求。
    • Samesite Cookie,为了从源头上解决这个问题,Google起草了一份草案来改进HTTP协议,那就是为Set-Cookie响应头新增Samesite属性,它用来标明这个 Cookie是个“同站 Cookie”,同站Cookie只能作为第一方Cookie,不能作为第三方Cookie。
  • 提交时要求附加本域才能获取的信息
    • CSRF Token
    • 双重Cookie验证
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值