0

RoR3アプリにこのような方法があります

  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(" ")))

この問題を解決するためにクエリを変更するにはどうすればよいですか?ああ、私はモンゴイドを使用していますよろしくお願いします

4

1 に答える 1

1

これはテストされていませんが、次のようなものです。

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

あなたはを台無しにする必要があるかもしれません<<。@noticiasオブジェクトでpaginateが何を探すのかわかりません。

于 2012-06-16T16:47:16.997 に答える