0

我有以下代码rmodal创建了一个对象()。

也就是说,类与其他一些类(cmodal, umodal, ccmodal, pmodal, emodal)具有多态关联

的创建rmodal有一个带有隐藏字段的表单,其中包括其类型(cmodalumodal等)和 ID(r_id

以下代码是否足够安全?刹车人目前指出,这条线可能会导致远程代码执行

 @r_type = params[:r].delete :r_type

 if (%w(cmodal umodal ccmodal pmodal emodal).include? @r_type)

      @rmodal = @r_type.classify.constantize.find(@r_id) rescue nil

我猜,因为我正在检查这r_type是可以接受的选择之一,所以它很好。

这是正确的方法吗?它是否足够安全?

4

1 回答 1

1

由于您将输入限制为已知值的白名单,因此我认为这是安全的。Brakeman 目前无法判断您正在使用保护语句,因此它会警告将用户输入 ( params[:r]) 转换为类名,但在这种情况下,我会认为它是误报。

于 2013-07-09T16:47:55.497 回答