csrf token在浏览器端如何保存可以避免cookie被窃取时csrf防御策略失效?

发布于 2022-09-02 12:36:21 字数 284 浏览 11 评论 0

1.csrf攻击过程分为五步,其中完成攻击的是有害网站带着已登录可信网站的用户的cookie向可信网站发起请求,通过cookie假冒已登录用户的身份登录,将用户的敏感信息发送给攻击者。

2.防御csrf的策略:检查Referer添加并验证token相结合
问题来了,怎么保证token的安全,token应该存放在哪里?

放在cookie中,设置httponly属性,cookie被攻击者发送给服务器时,token也被发送了,起不到作用。
那么怎么保存token呢,淘宝、京东之类的是怎么做的呢,请各位不吝赐教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不顾 2022-09-09 12:36:21

Token可以放在cookie中,在HTTP请求时,可以在form表单中加上一项<input type="hidden" value="your token">,提交给后台校验提交的token是否和cookie中的token一致。

CSRF的源站是获取不到cookie里的token的,所以它没办法模拟这样一个POST请求。至于httponly,实际上是用于防止XSS了,一般来讲跟CSRF关系不大。

疯了 2022-09-09 12:36:21

看了几个问题和答案感觉自己明白了一些

token,放在cookie中,还是和直接使用cookie一样,所以仅仅将token放在cookie是不行的;

需要在页面上有一个地方存放token,以表单提交的方式提供给后台,后台可以校验表单中的token和cookie中的token是否一致,一致则继续校验token,不一致直接返回;

既然页面有token了为什么cookie还要额外存放一份,因为如果cookie不存放token,就要localStore存在token,总之要有一个地方将token落盘,因为如果不将token落盘,下次你再打开这个网址的时候,token就没了,还需要重新登录重新获取token;

为什么放在cookie之后,别的网站获取不到cookie里面的token而自己的网站可以获取token中的cookie呢?

因为cookie采取同源策略,只有相同域名的网页才能获取域名对应的cookie,

你在自己的网页上 getCookie可以获取自己的cookie;所以你自己的网站可以获取自己的token,放到input中

而别人在其他域名无法获取你的cookie,也就无法获取你的token,所以当别人伪造请求时,token和cookie中的token是绝对不一致的;

至于想知道token放在cookie和localStore的区别的话,可以百度去查一下,我也不知道,我去百度了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文