我有一个我在整个代码中引用的常量哈希,例如:
CATEGORIES = {
business: '1002',
education: '1003',
entertainment: '1004',
# etc...
}
在我的一个控制器中,我需要通过参数测试类别的存在,所以通常我会做类似的事情:
CATEGORIES.has_key? params[:category].to_sym
然而,这似乎是对拒绝服务攻击的邀请,因为攻击者可以通过为参数提供随机字符串来轻松炸毁 Ruby 符号表category
。
似乎最简单的解决方案是将CATEGORY
键转换为字符串而不是符号:
CATEGORIES = {
'business' => '1002',
'education' => '1003',
'entertainment' => '1004',
# etc...
}
也许:
def self.valid_category(category_s)
CATEGORIES.keys.any? { |key| key.to_s == category_s }
end
在 Rails 中是否有更好或更惯用的方法来做到这一点?