请老师指正

来源:11-3 xsrf 防御 - 需求分析

hy_wang

2020-11-21

请问老师关于csrf这样理解正确吗。

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

当攻击者使用伪造请求发送时,它其实是无法拿到具体的cookie以及操作cookie,只能伪造请求携带请求域下的cookie进行伪造用户行为。

但是当我们使用token,也就是每次请求服务端会返回一个token的值放在cookie中,然后因为同源策略用户在当前同源域名下是可以操作当前cookie(只不过这一步被封装到了axios中)。通过js获取当前cookie,然后解析cookie拿出token,发送请求的时候额外添加一个验证的请求头value为解析后的token。

此时因为第三方攻击者只能模拟请求虽然跨域存在伪造请求的隐患但是因为同源限制,所有跨域请求均无法拿到token和操作token(它只是伪造请求中携带cookie)。

所以我理解区别就是,用户自己发送的请求额外添加了一个header,它的值是从cookie中解析出来的。而第三方伪造者(通过跨域操作伪造发送自己的请求),只能携带自己的请求头和截取到的cookie(无法进行任何操作)。因为缺少了解析cookie额外添加的请求头所以就会导致攻击失效。


请老师帮忙看下这样的理解是否是正确,如果理解不太对的还希望老师指正


写回答

1回答

ustbhuangyi

2020-11-22

CSRF 防护的核心还是在于这个 token 是每次你访问页面由后端下发给前端的,它是动态的,攻击者没法拿到这个 token,它通过 cookie 上传也行,通过 Query 参数也行,放在 Http Headers 中也可以。

0
3
hy_wang
非常感谢!
2020-11-22
共3条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程