【发布时间】:2020-08-21 15:32:25
【问题描述】:
重现步骤:
- 转到https://stackoverflow.com/
- 在您的网络浏览器中打开开发者控制台
-
执行以下JS代码:
fetch(`https://webhook.site/5a6f8001-3646-4b3e-bd76-a4562af5a9ef`, { credentials: 'include' }) - 转到https://webhook.site/#!/5a6f8001-3646-4b3e-bd76-a4562af5a9ef
您应该会在https://webhook.site 上看到 HTTP 请求
为什么 HTTP 请求会到达服务器? 这是否违反同源政策?
【问题讨论】:
-
你的意思是 CORS 而不是 CSRF?当 cookie 被用作身份验证机制时,CSRF 更像是一种保护。如果您确实是指 CORS,我猜
webhook.site只是允许任何来源?见developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…。 -
@sp00m 不,我的意思是 CSRF 攻击 en.wikipedia.org/wiki/Cross-site_request_forgery
-
当我尝试你的 sn-p 仅供参考时,我确实有 CORS 阻止了我的请求,来源
https://stackoverflow.com不允许。 -
@sp00m 现在检查这个 webhook.site/#!/5a6f8001-3646-4b3e-bd76-a4562af5a9ef 。你看到你的请求了吗?
-
有趣的是,虽然请求因为CORS被浏览器取消了,但看起来请求确实到达了服务器。我本来预计该请求甚至不会到达服务器。令人惊讶的是,我会等待更聪明的大脑来解决这个问题:)
标签: ajax security csrf same-origin-policy websecurity