Spring CSRF保护方案?

时间:2016-11-29 19:51:17

标签: http spring-security spring-boot csrf

我正在努力更好地理解Spring CSRF保护如何工作的机制。假设我有一个网站https://example.com/,人们可以对候选人进行投票。用户还可以交换消息。我还有一位用户已登录,另一位用户向她发送了一条消息,说明要点击链接https://example.com/vote/candiate/30

如果用户点击此链接,浏览器是否会同时为登录用户发送CSRF令牌和会话ID,从而绕过CSRF保护检查?

2 个答案:

答案 0 :(得分:2)

链接通常与CSRF无关的原因是CSRF仅在请求更改时才会出现问题。链接(GET请求)不应该改变任何东西。如果确实如此,就像在你的例子中一样,它会给我认为的候选人增加投票,来自外部来源(不同网站)的任何链接也将能够利用"正常" CSRF只需链接到该URL。

示例中的问题不是Spring中的CSRF保护不充分,问题是在这种情况下投票是GET请求,并且GET通常不受设计的CSRF保护。解决方案是将投票请求更改为POST,然后保护其免受CSRF的影响(也可以是更多RESTful btw)。

答案 1 :(得分:0)

主要想法: 提交请求时,服务器收到特殊cookie并等待此cookie中的定义值。如果此值不同,则请求将失败。 因此,如果服务返回表单以便在帐户之间转移资金,则此表单包含参数,预期在提交表单时接收,如果数据将在没有此参数的情况下发送,则请求将不会被执行