CSRF,令牌和同源政策解释

seb*_*511 5 cookies csrf token same-origin-policy

所以我知道有很多关于CSRF的问题(因为我已经读过其中的一些),但有一点我还是不明白.让我们假设以下情况:

  1. 我在我的服务器上登录(带有cookie),其中有一个带有"删除我的帐户"按钮的页面.哪个我不想按.

  2. 我访问了一个黑客的服务器:

    一个.我的浏览器请求'bad.html',它包含JS,并定义了回调函数.它还有一个类似的脚本:(因此避免了同源策略问题)

    var s = document.createElement('script'); 
        s.src = 'url to "deleteAccountPage" of my server?'
        s.src += 'callback=hackerCallback'; 
        s.type = 'text/javascript';
    document.body.appendChild(s);
    
    Run Code Online (Sandbox Code Playgroud)

    湾 脚本被"追加"浏览器将加载页面然后调用hackerCallback传递页面HTML文本作为参数.

    C.使用此HTML,回调可以在那里解析令牌.

  3. hackerCallback现在有令牌,在"deleteMyAccount"页面上向我的服务器发送Ajax请求.

  4. 我的帐户现已删除,因为令牌,Cookie甚至浏览器跟踪都与服务器注册的匹配.

你怎么避免这种行为?我已阅读过只允许在我的服务器上使用某些标题的内容.这会缩短我服务器上的所有跨域请求,但是根据这个链接(http://blog.alexmaccaw.com/jswebapps-csrf)这还不够......(我完全相信)

Thansk帮助Seba-1511

gab*_*ssi 0

您正在使用 JSONP 来通过 scr 标记发出跨域请求。JSONP 仅允许用于 GET 请求,并且您不应具有进行更改的 GET 端点(非幂等)。

deleteAccount 应该是无法通过 JSONP 请求的 POST 端点。

如果您坚持在deleteAccount上使用GET,您应该使用CSRF令牌或在标头而不是cookie中发送令牌(如果您使用XHR请求)