CSRF可以在API中发生吗?

时间:2013-05-01 13:08:21

标签: api csrf

我们使用的Web应用程序框架内置了对跨站点请求伪造的处理支持。当数据通过浏览器发布到我们的网络服务器时,这很有效。

目前,我们正在开发一个API,其中上传的XML文件由同一个应用程序框架处理。我们的API需要在上载的XML文件中使用唯一标记进行身份验证。由于默认情况下启用了CSRF检测,并且XML文件不包含CSRF令牌,因此我们目前无法通过此API上载任何数据。

但是,我们可以很容易地禁用CSRF检测,但这样安全吗?

here个帖子 - 非常大胆地说 - 以下内容。

It is safe to remove csrf for API calls as the particular vulnerability can only be executed through a web browser.

这是真的吗? CSRF攻击是否可以通过API发生类似

2 个答案:

答案 0 :(得分:2)

这取决于您如何使用API​​。假设使用API​​的网站容易受到CSRF的攻击,这意味着API也很脆弱。

Wekipedia说

  

CSRF利用网站对用户浏览器的信任。

为了支持API调用,服务器要求将凭据与每个请求一起发送(或者像摘要,安全句柄,哈希等等)。如果凭据存储在应用程序内存中(如移动应用程序),则API不易受CSRF攻击。但是,如果凭证保存在会话或cookie中,则API会暴露给CSRF

答案 1 :(得分:0)

这取决于您的意思"禁用CSRF检测"。

一些指示:

  • 只要您 执行 验证唯一身份验证令牌,那么攻击者就无法在没有有效令牌的情况下欺骗有效请求。这很简单。

  • "唯一身份验证令牌"这里指的是浏览器不会自动发送的内容。 (所以不要使用HTTP Basic / DigestCookie标题等内容。)您(API创建者)必须出现 unique 用。这可以像额外的Foobar:the_unique_token标题一样简单。

  • 请注意,根据Cookie(或浏览器自动发送的其他令牌)识别客户端是完全正常的,但只有在提供唯一令牌时才允许输入。

只要攻击者可以猜测/获取令牌(the_unique_token),就可以欺骗有效请求。因此,令牌需要长,随机,一次性使用才能保证安全。