[英]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.