将CSRF令牌存储在cookie中是否足以防止CSRF?

时间:2018-09-19 07:45:53

标签: angularjs spring security cookies csrf-protection

为了防止CSRF,Spring Security和AngularJS使用一种方法将CSRF令牌存储在cookie中。然后,对于每个请求,Web客户端将与cookie和HTTP标头相同的令牌发送到服务器以进行验证。这些来自这个博客。 https://spring.io/blog/2015/01/12/the-login-page-angular-js-and-spring-security-part-ii#csrf-protection

但是,我认为另一方面,黑客可以伪造cookie和HTTP标头来发送伪造的请求。这是正确的吗?

1 个答案:

答案 0 :(得分:0)

我从CSRF令牌的ASP .net一侧了解到,用于验证防伪令牌的地方是,将在两个地方存储此令牌。
1.在页面中,当从角度进行请求时,我们将在请求标头中包含此令牌。
2.在Cookie中,当从浏览器触发时,请求会自动提取该Cookie。

在服务器端,当接收到请求时,服务器将解密这两个令牌并验证请求,如果它们之间具有有意义的关系(此关系由服务器使用算法确定)。

现在,在这里,由于没有公开防伪验证算法并且每次在旅途中生成新的字符串时,攻击者都无法找出这两个字符串,第二点是我认为攻击者无法直接将cookie包含在请求中,因为cookie是从浏览器中拾取的。他们可能是这样做的工具。但是除非没有公开使用的算法,否则攻击者将无法完成csrf攻击。

我认为Java的Spring方面可能是相同的。