Rails 开发小程序时,怎么处理 CSRF 的问题?

QueXuQ · 2019年05月16日 · 最后由 ad583255925 回复于 2019年05月23日 · 3931 次阅读

我用的是:

gem "graphql"
gem 'graphiql-rails', group: :development

官方也有解决 CSRF 的方法。

headers: {
     'X-CSRF-Token': $("meta[name=csrf-token]").attr("content"),
 }

可是在小程序项目中,比较另类。
不知道各位怎么处理这个问题的呢?难道直接把 CSRF 关掉?

API 模式下都可以关掉 CSRF

  • Gemfile gem 'rack-cors'

  • config/initializers/cors.rb

    Rails.application.config.middleware.insert_before 0, Rack::Cors do
    allow do
    origins '*'
    
    resource '*',
    headers: :any,
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
    end
    end
    
w7938940 回复

你这是跨域

凡用 token 验证的,都不需要 CSRF

另外由于大部分浏览器支持 Origin,现在服务器验证 Origin 对不对就可以了,也不用 CSRF token 了

luikore 回复

origin可以篡改的吧?

msl12 回复

按标准实现的浏览器会把请求中的 Origin 替换掉

第一次请求服务器的时候,把 CSRF token 拿过来

需要 登录 后方可回复, 如果你还没有账号请 注册新账号