0

我的 RoR 3 应用程序中有这样的方法

  def buscar
    array = params[:query].split(' ')
    array.each_with_index  do |query, index|
      array[index] = array[index].gsub(/<\/?[^>]*>/, "").downcase
    end
    @noticias = Noticia.where(:tags.all => array).paginate(:page => params[:page])
  end

brakeman用来扫描任何问题,他说这个

Possible SQL injection near line 116: Noticia.where(:tags.all => (params[:query].split(" ")))

如何更改查询以消除此问题?哦,我正在使用 mongoid 提前谢谢

4

1 回答 1

1

这是未经测试的,但是是这样的:

tag = params[:query].split(" ")
tag.each do |tag|
  @noticias << Noticias.find_by_tag(tag)
end
@noticias.paginate(:page => params[:page])

你可能不得不弄乱<<. 我不确定 paginate 在 @noticias 对象中寻找什么。

于 2012-06-16T16:47:16.997 回答