【问题标题】:REST web API for mobile devices - CSRF protection?用于移动设备的 REST Web API - CSRF 保护?
【发布时间】:2014-08-26 07:26:59
【问题描述】:

我了解 CSRF 攻击以及对它们的内外保护,我已经阅读了有关它的整个 owasp 页面,但在保护 REST API 方面我有点不知所措。

我正在为移动应用程序开发 RESTful Web API。为了对用户进行身份验证,我使用 oauth 服务器包(密码流授权)和我为 facebook 的手动登录流定制的社交授权(我们的数据库中有本地和 facebook 帐户)。这两种授权都会生成我们特定于应用程序的访问令牌,客户端(移动应用程序)通过每个请求(在 Authorization 标头中)发送到服务器,以确保他/她是登录用户。

仅此一项就不会缓解 CSRF 攻击窗口吗?如果不是,我应该如何保护我的服务器免受这些攻击?

附:我想检查引荐来源网址在这里没有帮助,因为引荐来源网址与我服务器的域不同,对吧?

【问题讨论】:

  • Referrer 并不总是被发送并且很容易被欺骗。作为安全基础设施的一部分,我根本不相信它。
  • 你应该在 owasp 页面上阅读它,这是一个可行的选择:owasp.org/index.php/…

标签: php facebook api security rest


【解决方案1】:

好的,首先,CSRF 攻击需要一个名为browser 的重要应用程序。没有人可以简单地欺骗您的移动应用程序将请求连同凭据一起发送到 api 服务器。因此,您的移动应用程序特别不受 CSRF 攻击。

但是,如果您使用相同的 api 服务器与 Web 前端通信(如果您的应用程序也有相应的 Web 应用程序),则会出现问题。在这种情况下,您必须将 API 服务器用于移动应用程序和 Web 前端,并使用 CSRF 预防 ACTIVE 用于 Web 前端 API 调用。或者,您可以使用相同的 API 服务器,如果您可以通过某种方式将呼叫与网络和移动电话区分开来。

【讨论】:

  • 这就是我正在做的事情,实际上:我有 API 和两组独立的控制器 - 一组用于 Web,另一组用于移动客户端。我已经在 Web 控制器上使用了 CSRF 保护,所以我想我是安全的。
  • @MantasD.Šimkūnas 你用什么方法来预防 CSRF?
  • 如何判断客户端是移动客户端还是浏览器客户端?
  • @DobesVandermeer 您可以通过参数集或标志本身来区分。但是,如果您担心与 MOBILE API 交互的 Web 界面,它不是 CSRF 安全的,您可以简单地为两者保留不同的 cookie 集,现在如果攻击者试图从您的浏览器向 MOBILE API 发出请求,他不能,因为浏览器 cookie 中缺少正确的凭据。
  • @mebjas 谢谢我没想过在移动版本中不使用(相同的)cookie,但这很好地解决了问题。
猜你喜欢
  • 2011-07-31
  • 1970-01-01
  • 2017-01-21
  • 2014-09-21
  • 2016-09-05
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 2013-08-21
相关资源
最近更新 更多