Как очистить пользовательский ввод для gem акт-as-taggable-on, Ruby on Rails
На данный момент мой код выглядит так:
@events = Event.tagged_with(params[:search_input])
Но такой запрос допускает SQL-инъекции и его следует избегать.
Rubyonrails.org рассказывает нам, как избежать таких атак ( http://guides.rubyonrails.org/security.html)
Например, используя вопросительные знаки:
Model.where("login = ? AND password = ?", entered_user_name, entered_password).first
Тем не менее, я не знаю, как дезинфицировать пользовательский ввод для этого драгоценного камня. Я попробовал следующее:
@events = Event.tagged_with("?", "%#{params[:search_input]}%")
Но это приводит к следующей ошибке:
TypeError (no implicit conversion of Symbol into String):
Есть идеи, как санировать этот вклад? Заранее спасибо!
1 ответ
В этом случае acts_as_taggable_on
Драгоценный камень занимается обработкой для вас. Все, что вам нужно сделать, это передать params
ценность для драгоценного камня. Попробуй это:
@events = Event.tagged_with(params[:search_input])
Как правило, вы будете использовать подход, который вы пытались использовать при непосредственном взаимодействии с ActiveRecord. В этом случае, acts_as_taggable_on
делает все это для вас, внутренне, используя механизм параметров запроса. Интерфейс для драгоценного камня не позволяет вам также использовать параметризацию, что и привело к ошибке.