前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大白话讲讲CSRF究竟是什么

大白话讲讲CSRF究竟是什么

作者头像
19组清风
发布2021-11-15 15:49:02
3440
发布2021-11-15 15:49:02
举报
文章被收录于专栏:Web Front EndWeb Front End

其实CSRF详尽的防御策略在TS-AXIOS库中我已经实现了。

首先简单来说:

CSRF攻击的原理

正常情况下csrf攻击是无效的,当配置xhr.withCredentials支持跨域情况携带cookie,然后SameSite也支持的情况下这个时候跨域请求就存在隐患。

当攻击者发送跨域请求伪造用户的时候,因为可以在跨域请求中携带用户(请求域的cookie)所以从而伪造出是用户发送的请求。

CSRF请求防御的策略也很简单:

当每次请求服务端后,服务端会生成一个token返回并且通过set-cookie的方法保存在客户端。当客户端每次发送请求的时候,会从cookie中解析出token的值放在requestHeaders中。从而告知服务端,服务端通过headers中的token值进行鉴别是否是用户,从而达到CSRF防御。

因为同源策略的限制,即使攻击者可以通过伪造请求携带用户cookie的形式发送请求但是攻击者拿不到cookie具体信息(它只能通过请求携带并不能通过js之类获取操作)。所以也就决定了伪造者的请求无法读取cookie从而设置对应token的请求头,此时服务端识别不到请求头中的token也就认为这次请求是无效的达到方法效果。

同时需要注意Token机制是定期刷新的,具体刷新Token的时间取决于后台。因为Token是后台返回的,需要鉴别的接口会根据Token去鉴别用户权限,权限不足就401(首先会判断是否存在Token,其次存在也会要求是否是最近的Token)。所以结合Token的定期刷新以及上边讲到的放在header中的Token所以有效的防止了CSRF。

详细来讲讲

XSRF 又名 CSRF (opens new window),跨站请求伪造,它是前端常见的一种攻击方式

CSRF 的防御手段有很多,比如验证请求的 referer,但是 referer 也是可以伪造的,所以杜绝此类攻击的一种方式是服务器端要求每次请求都包含一个 token,这个 token 不在前端生成,而是在我们每次访问站点的时候生成,并通过 set-cookie 的方式种到客户端,然后客户端发送请求的时候,从 cookie 中对应的字段读取出 token,然后添加到请求 headers 中。这样服务端就可以从请求 headers 中读取这个 token 并验证,由于这个 token 是很难伪造的,所以就能区分这个请求是否是用户正常发起的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年11月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先简单来说:
    • CSRF攻击的原理
      • CSRF请求防御的策略也很简单:
        • 详细来讲讲
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档