为什么OAuth是一种可行的技术来阻止RESTF API的CSRF?

时间:2012-06-12 15:22:07

标签: oauth-2.0 csrf csrf-protection

我对此question有一个确切的情况:将csrf保护与RESTful API结合起来有哪些可行的技术?

一个answer讨论了使用

  • 使用SSL进行基本身份验证
  • 每个应用程序1个API密钥
  • 的OAuth

我已经确信要实现OAuth2.0,你将拥有每个应用程序的access_token,client_id,client_secret。

但是,我并不知道这实际上有助于防止CSRF。

我的观点是,在一天结束时,你仍然需要ssl。

因为在OAuth2.0中,当客户端应用程序代表资源所有者发送请求时,他们需要发送数据参数,例如client_id,client_secret和访问令牌。

如果没有HTTPS,如果通过泄漏或中间人知道client_id,client_secret和访问令牌,那么由于访问令牌的到期时间,CSRF仍然有可能是小的

我的理解是否正确?

1 个答案:

答案 0 :(得分:2)

如果资源仅受OAuth 2保护且攻击者获得client_id,client_secret和访问令牌,则根本不需要CSRF。攻击者可以直接发送使用受保护资源的请求,并且会提供服务,因为OAuth 2不会过滤请求源,只需要访问令牌。

通常,您绝对应该将HTTPS用于身份验证服务器和受保护资源,以避免中间人攻击。但是,如果您正在使用"授权代码授予"场景(即从您自己的Web应用程序中使用它),即使资源所有者也不知道访问令牌,他只能拦截授权码。因此,如果您的Web应用程序与授权服务器和受保护资源都具有可信(例如Intranet)连接,则可以安全地使用与受保护资源的未加密连接。