繁体   English   中英

ruby on rails json剩余api csrf令牌

[英]ruby on rails json rest api csrf token

我对csrf令牌和这些东西感到困惑。

我用谷歌搜索

skip_before_action :verify_authenticity_token

这将跳过restapi的csrf问题

所以我在application_controller.rb做了这样的代码

skip_before_action :verify_authenticity_token, :if => :json_request?
def json_request?
    request.format.json?
end

但是我的问题是,这一切真的完成了吗? 这个csrf令牌不是用于安全保护吗? 我可以跳过此关键功能吗?

您可以仅添加ApplicationController的子类,并像下面这样覆盖protect_from_forgery方法:

class API::V1::BaseController < ApplicationController
  protect_from_forgery with: :null_session

  respond_to :json

end

然后让您的api控制器继承自此!

查看Rails上的API教程,这可能会有所帮助

就我而言,我使用:

class ApplicationController < ActionController::Base
  protect_from_forgery unless: -> {request.format.json?}
end

我在没有用户或任何其他敏感数据的项目中使用了此功能,因此无需使用身份验证令牌。 但是,如果您管理敏感数据,则应以某种方式使用Auth令牌(JWT,X-Auth-Token等)。

通常,人们创建应用程序控制器的子控制器来处理API。 然后,API控制器将API控制器子类化,您可以仅对那些控制器关闭csrf保护。

如果您正在构建一个真正的API,供其他人用来获取和发布数据,那么您将具有其他一些方式来验证这些用户是否具有读取,写入或两者的权限。

但是,如果API仅用于处理来自您自己的html / javascript应用程序的请求,则只需在ajax调用中包含csrf令牌即可。 警告:无法验证CSRF令牌的真实性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM