我正在为RoR api开发一个iOS应用程序(我的同事制作了它)。我正在尝试开发登录部分,但在POSTMan中测试api时,我注意到它需要一个CSRF令牌。有没有办法绕过api调用来获取CSRF?
旁注:我正在使用AFNetworking 2.0
答案 0 :(得分:2)
您可以做几件事:
authenticity_token
参数的POST表单作为正确的CSRF令牌。您可以使用rails helper form_authenticity_token
将原始令牌嵌入到视图中的任何位置,或者从注册表单的隐藏标记中获取它。 (这是我最喜欢的选择)答案 1 :(得分:0)
最简单的修复方法是将服务器端更改为不对CSRF令牌进行身份验证。以下是为API使用不同控制器的示例。
class Api::BaseController < ApplicationController
skip_before_filter :verify_authenticity_token
end
一般情况下,您的API要么要求对API调用进行身份验证(在这种情况下您应该拥有自己的身份验证,OAuth或任意数量的身份验证机制),要么不是(在这种情况下,它是可公开访问的) API和CSRF无关紧要)。还有一些其他线程here和here可以讨论它。
来自another answer on SO (go upvote it!):
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.