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

QueXuQ · May 16, 2019 · Last by ad583255925 replied at May 23, 2019 · 3887 hits

我用的是:

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
    
Reply to w7938940

你这是跨域

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

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

Reply to luikore

origin可以篡改的吧?

Reply to msl12

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

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

You need to Sign in before reply, if you don't have an account, please Sign up first.