OAUTH2是否需要CSRF保护

时间:2017-08-10 18:05:35

标签: spring spring-boot oauth-2.0 csrf

我使用REST application创建了Spring Boot并受Spring Security Oauth2支持。我使用Cloudfoundry UAA作为第三方令牌提供商。

应用程序中没有会话,每个请求都必须附带UAA提供的Oauth2令牌。是否仍然需要保护REST服务免受CSRF攻击?

因为恶意网站无法从我的UAA服务中获取有效的Oauth2令牌。

由于

2 个答案:

答案 0 :(得分:1)

这取决于你的客户端是如何实现的,假设你使用angular我们新的httpClient和拦截器功能:https://angular.io/guide/http。如果你有一个拦截器在发送请求时为你添加令牌,攻击者可能会利用它。为了防止这种攻击,角度拦截器有一个构建机制,可以将XSRF-TOKEN添加到cookie上的所有请求库中......但是在同一链接中提到:

  

请注意,HttpClient的支持只是XSRF保护方案的客户端的一半。您的后端服务必须配置为设置页面的cookie,并验证标头出现在所有符合条件的请求上。如果没有,Angular的默认保护将无效。

答案 1 :(得分:0)

CSRF攻击目标通常是CookiesBasic身份验证标头。

由于在我的应用程序中没有使用这些CSRF,因此不需要保护。 身份验证从提供的Oauth2令牌开始(没有基本身份验证),并且一旦返回响应,就忘记了请求的状态(没有会话cookie)。

参考文献:

  1. https://security.stackexchange.com/a/170414
  2. https://security.stackexchange.com/questions/166724/should-i-use-csrf-protection-on-rest-api-endpoints/166798#166798