ruby on rails——每当有人试图大量分配受保护的属性时抛出异常



我正在修复客户端应用程序中的一些大规模分配漏洞,我想确保Rails不会悄悄地放弃大规模分配受保护属性的尝试。相反,我想抛出一个异常,以便进行调查。

WARNING: Can't mass-assign these protected attributes: ...

我想抛出一个异常代替(或附加)

编辑:

我用Rails 2.3.4

您必须做一些Rails猴子补丁来做到这一点。请确保只在开发和/或测试中使用此代码,因为你不希望应用程序在用户尝试批量分配时引发错误。我将在config/initializers/error_mass_assign.rb中添加以下内容:

module ActiveModel
  module MassAssignmentSecurity
    module Sanitizer
    protected
      def warn!(attrs)
        self.logger.debug "WARNING: Can't mass-assign protected attributes: #{attrs.join(', ')}" if self.logger
        raise(RuntimeError, "Mass assignment error") if ['test', 'development'].include?(Rails.env)
      end
    end
  end
end

这将引发常规警告,但是当在测试和开发环境中任何时候受保护的属性被大量分配时,它也将引发带有消息"大量分配错误"的RuntimeError。如果你想要另一个异常,你也可以修改上面代码中的错误信息或错误。

请确保重新启动您的控制台或服务器使其生效。

p。S:在Rails 2中,您需要做以下操作:

module ActiveRecord
  class Base
    def log_protected_attribute_removal(*attributes)
      logger.debug "WARNING: Can't mass-assign these protected attributes: #{attributes.join(', ')}"
      raise(RuntimeError, "Mass assignment error")
    end
  end
end

相关内容

  • 没有找到相关文章

最新更新