有关 DJango csrf_token 的一个疑问

2017-02-22 14:37:03 +08:00
 scriptB0y

我知道 csrf 是防止跨站伪造请求的,但是我觉得下面这种方式可能绕过 csrf 。

如果我要伪造一个跨站的请求。我先去访问 django 网站上带 form 的页面( get 方法),得到相应之后拿出来 csrf_token (从 cookie 中或者从页面中),然后再发送请求,请求的头里面写上我上一次拿到的 toekn 。

请问上面我的这个想法,不可行在哪里? 谢谢。

1808 次点击
所在节点    问与答
3 条回复
RandomK
2017-02-22 14:46:26 +08:00
CSRF 是在浏览器里完成的攻击。如果脱离了浏览器的限制,使用其他程序或后端脚本直接获取页面的里的 csrf_token ,再发送请求,和 csrf 没有关系了。在浏览器同源策略的限制下,你无法在 B 网站直接获取 A 网站里的 cookie 和页面内容。
scriptB0y
2017-02-22 15:01:50 +08:00
@RandomK 谢谢! 原来是这样。

既然 B 网站拿不到 A 网站的 cookie ,那么 B 网站想要通过 get 来获得 A 网站的 html 然后拿到 csrf 的这个 input ,也是受限于同源策略,被禁止了的。对不?
RandomK
2017-02-22 18:06:50 +08:00
@scriptB0y 是的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/342310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX