加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用模型属性调用Brakeman不安全反射方法const

发布时间:2020-12-16 21:37:59 所属栏目:百科 来源:网络整理
导读:在我的rails应用程序中,我收到了来自制动器的以下安全警告.使用模型属性调用不安全的反射方法constantize.这是我的代码正在做的事情. chart_type = Chart.where( id: chart_id,).pluck(:type).firstbegin ChartPresenter.new(chart_type.camelize.constantiz
在我的rails应用程序中,我收到了来自制动器的以下安全警告.使用模型属性调用不安全的反射方法constantize.这是我的代码正在做的事情.

chart_type = Chart.where(
  id: chart_id,).pluck(:type).first

begin
  ChartPresenter.new(chart_type.camelize.constantize.find(chart_id))
rescue
  raise "Unable to find the chart presenter"
end

根据我的研究,我没有找到任何具体的解决方案.我听说你可以制作白名单,但我不确定刹车手正在寻找什么.我试图创建一个数组并在调用constantize之前检查它,并且仍然会抱怨破坏者.对此的任何帮助都会很棒.如果你认为这不是一个必要的解决方案,你可以详细说明为什么它不应该成为一个问题吗?

解决方法

您可以反过来找到名称为chart_type的类:
chart_class = [User,Category,Note,Post].find { |x| x.name == chart_type.classify }
if chart_class.nil?
  raise "Unable to find the chart presenter"
end
ChartPresenter.new(chart_class.find(chart_id))

这样Brakeman应该开心,你更安全……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读