为什么 auth cookies 容易受到 CSRF 而 auth tokens 不

Why are auth cookies susceptible to CSRF while auth tokens are not

我一直在阅读有关 cookie、本地和会话存储以及它们如何与身份验证相关的内容。

我一直在读的一件事是 API 通常不必像 Web 应用程序那样担心 CSRF(Flash 相关漏洞除外?),原因与 cookie 有关基于身份验证与基于令牌的身份验证。

我不明白的是为什么 cookie 比 token 更容易使用。是不是因为 cookie 是根据请求的域自动发送的,而发送令牌需要某种手动操作。最后的陈述是否正确?

我认为我感到困惑的一个原因是因为我使用的框架似乎总是自己实现这些东西,所以我从来不需要深入研究来实现它。

是的,当您访问恶意网站时会发生 CSRF 攻击,并且该网站会触发对合法网站的请求,浏览器将 implicitly authenticate

例如,如果您仍然使用基于 cookie 的身份验证机制登录到您的电子邮件提供商,并且您碰巧访问了一个恶意网站,该网站执行从 JavaScript 到 https://www.youremailprovider.com/inbox 的请求,那么浏览器会自动将它为该域存储的 cookie 附加到请求中。现在,来自恶意站点的 JavaScript 可以访问您收件箱中的所有电子邮件。

基于令牌的身份验证不容易受到此类攻击,因为攻击者站点首先需要窃取令牌,然后才能对合法网站进行 AJAX 调用。