Spring CSRF保护场景?

Spring CSRF protection scenario?

我正在尝试更好地理解 Spring CSRF 保护的工作机制。假设我有一个站点 https://example.com/,人们可以在其中对候选人进行投票。用户还可以交换消息。我也有一个用户登录,另一个用户给她发了一条消息,说要点击 link https://example.com/vote/candiate/30.

如果用户点击这个link,浏览器会不会同时发送登录用户的 CSRF 令牌和会话 ID,从而绕过 CSRF 保护检查?

主要思想: 提交请求时,服务器收到特殊的 cookie 并等待此 cookie 中定义的值。如果这个值是 differet ,请求应该失败。 因此,如果服务 returns 用于在帐户之间转移资金的表单,此表单包含参数,即提交表单时预期接收的参数,如果没有此参数将发送数据,则不会处理请求

link 通常 不是关于 CSRF 的问题的原因是 CSRF 仅在请求更改某些内容时才是问题。 link(GET 请求)不应更改任何内容。如果是这样,就像在您的示例中一样,它会向我想的候选人添加投票,来自外部来源(不同网站)的任何 link 也将能够通过 [=17] 利用 "normal" CSRF =]到 url.

示例中的问题不是 Spring 中的 CSRF 保护不充分,问题是这种情况下的投票是一个 GET 请求,并且 GET 通常不会在设计上针对 CSRF 进行保护。解决方案是将投票请求更改为 POST,这样就可以防止 CSRF(顺便说一句,这也会更多 RESTful)。