V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
scriptB0y
V2EX  ›  问与答

有关 DJango csrf_token 的一个疑问

  •  
  •   scriptB0y · 2017-02-22 14:37:03 +08:00 · 1790 次点击
    这是一个创建于 2816 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    既然 B 网站拿不到 A 网站的 cookie ,那么 B 网站想要通过 get 来获得 A 网站的 html 然后拿到 csrf 的这个 input ,也是受限于同源策略,被禁止了的。对不?
    RandomK
        3
    RandomK  
       2017-02-22 18:06:50 +08:00   ❤️ 1
    @scriptB0y 是的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1155 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:40 · PVG 02:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.