Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 绕过iOS应用程序的CSFR令牌_Ruby On Rails_Afnetworking - Fatal编程技术网

Ruby on rails 绕过iOS应用程序的CSFR令牌

Ruby on rails 绕过iOS应用程序的CSFR令牌,ruby-on-rails,afnetworking,Ruby On Rails,Afnetworking,我正在为RoR api开发一个iOS应用程序(是我的同事开发的)。我正在尝试开发登录部分,但在POSTMan中测试api时,我注意到它需要CSRF令牌。有没有办法绕过api调用来获取CSRF 旁注:我正在使用AFNetworking 2.0,最简单的修复方法是将服务器端更改为不验证CSRF令牌。下面是一个为API使用不同控制器的示例 class Api::BaseController < ApplicationController skip_before_filter :verify_

我正在为RoR api开发一个iOS应用程序(是我的同事开发的)。我正在尝试开发登录部分,但在POSTMan中测试api时,我注意到它需要CSRF令牌。有没有办法绕过api调用来获取CSRF


旁注:我正在使用AFNetworking 2.0,最简单的修复方法是将服务器端更改为不验证CSRF令牌。下面是一个为API使用不同控制器的示例

class Api::BaseController < ApplicationController
  skip_before_filter :verify_authenticity_token
end

您可以做以下几件事:

  • 您可以在执行post之前启动GET请求,并检索会话CSRF令牌。然后使用
    authenticity\u token
    参数作为正确的CSRF token提交POST表单。您可以使用rails助手
    form\u Authentity\u token
    将原始标记嵌入视图中的任何位置,也可以从注册表单的隐藏标记中获取原始标记。(这是我最喜欢的选择)
  • 您可以在您的站点上创建一个二级日志,它本身实际上就是一个GET请求。在这里绕过CRSF令牌并不太危险,因为任何人都应该有权登录。这样做的好处是可以为您可能需要的任何其他操作保留CRSF,但对于需要更多安全性的操作则不起作用
  • 您可以使iOS页面由UIWebView组成。我不确定这是否适合您的需要,但它将具有适当的CSRF令牌,您可以在提交后删除UIWebView。这有点像选项1,但体积更大

  • 祝你好运

    不要这样做!它会从您的站点中删除CSRF保护。我还不太擅长RoR,但这似乎是一个坏主意。我开始搜索有关CSRF和API的其他响应,我发现了这个线程——这不也适用于这里吗@Waynlue说得对。我将与后端开发人员讨论最佳实践。@TarynEast这个答案有意义吗?我想你是因为这个原因投了反对票,但我觉得对于API来说,我所说的原因是不同的。如果您不同意,请告诉我。:)看起来这个问题和你的问题很相似(我没有深入研究)。有帮助吗?
    CSRF attacks rely on cookies being implicitly sent with all requests to a particular domain. If your API endpoints do not allow cookie-based authentication, you should be good.