Rails protect_from_forgery与移动应用程序

时间:2012-02-25 18:25:14

标签: android ios ruby-on-rails-3 csrf protect-from-forgery

我正在Rails上构建应用,我的protect_from_forgery中有application.rb。我还为移动应用程序构建了一个RESTful API,以便使用JSON数据进行通信。我看到一些网站声称,为了让移动应用与rails应用程序进行交互,他们会关闭protect_from_forgery以获取JSON请求。

  

这如何解决CSRF的问题?恶意站点是否可以没有代表用户执行不需要的更改的JSON POST请求?

因此,为了解决这个问题,我决定使用只有移动应用才会使用的自定义mime-typespecial key,然后protect_from_forgery执行以下操作:< / p>

  1. 检查csrf令牌是否作为hidden div存在(对于Web应用程序为true,默认情况下包含)。
  2. 如果不存在,请检查此special keymime-type
  3. 无论如何都要达到这个或类似的目的来解决这个问题吗?

    更新

    事实证明我过度思考了这个问题。 Rails是“神奇的”,并以某种方式自动适当地处理来自移动应用程序的请求,而不会引发异常。所以,基本上我们根本不需要做任何修改。

    我没有完全检查Rails是如何实现这一点的 - 从教学角度来说,对于某些人来说,这可能仍然很有趣。

1 个答案:

答案 0 :(得分:2)

您不必使用ActiveResources。如果您将请求发送为xml,那么它将绕过protect_from_forgery。

curl -H "Content-Type: text/xml" -d "<support-request><from>...</from></support-request>" -X POST http://localhost:3000/support_requests.xml -i

应该非常简单。