如何在Rails 4中更改'csrf-param'和'csrf-token'的元标记名称?

6

正如标题所述,我想知道如何更改csrf-paramcsrf-token的元标签名称?

<meta content="authenticity_token" name="csrf-param" />
<meta content="123456" name="csrf-token" />

我之所以问这个问题,是因为出于安全考虑,我想隐藏我网站使用的技术。Chrome插件Wappalyzer使用这些meta标签作为Ruby on Rails的指示器。

1
看起来只需要一个简单的 monkey patch 就可以改变名称。不过,jquery_ujs 可能是另一个问题。Rails 在 ActionView::Helpers::CsrfHelper 中定义它 (https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/csrf_helper.rb)。 - Dan Fairaizl
谢谢您的回答。我需要更改Rails接收CSRF令牌的部分吗? - Robin
1个回答

1
创建一个名为change_csrf_name.rb的初始化程序。
在这个文件中,你可以更改:name => 'xyz'。请注意,这可能会破坏一些你没有预料到的内置功能。
module ActionView
  module Helpers
    module CsrfHelper
      def csrf_meta_tags
        if protect_against_forgery?
          [
            tag('meta', :name => 'csrf-param', :content => request_forgery_protection_token),
            tag('meta', :name => 'csrf-token', :content => form_authenticity_token)
          ].join("\n").html_safe
        end
      end
    end
  end
end

谢谢你的回答。有时候我需要这些元标签用于我的JavaScript,它们可以在AJAX请求中将CSRF令牌发送到服务器。基本上我只是想知道如何重命名这些元标签的'name'属性。 - Robin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接