我正在 Rails 上构建一个应用程序,protect_from_forgery
我的application.rb
. 我还为移动应用程序构建了一个 RESTful API 以使用JSON
数据进行通信。我看到一些网站声称为了让移动应用程序与 rails 应用程序交互,他们关闭protect_from_forgery
了 JSON 请求。
这如何解决 CSRF 的问题?恶意站点能否没有代表用户执行不良更改的 JSON POST 请求?
所以,为了解决这个问题,我决定使用一个自定义的mime-type
或者special key
只有移动应用程序会使用的,然后protect_from_forgery
执行以下操作:
- 检查 csrf 令牌是否以 a 的形式存在
hidden div
(对于 Web 应用程序为 true,并且默认包含)。 - 如果不存在,请检查此
special key
或mime-type
。
有没有办法实现这个或类似的,来解决这个问题?
更新
原来是我想多了这个问题。Rails 是“神奇的”,它以某种方式自动、适当地处理来自移动应用程序的请求,而不会引发异常。所以,基本上我们根本不需要做任何修改。
不过,我并没有完全检查 Rails 是如何实现这一点的——从教学上讲,这对某些人来说可能仍然很有趣。