如何清理gem on the action-as-taggable-on,Ruby on Rails的用户输入

时间:2016-05-31 21:59:31

标签: ruby-on-rails ruby acts-as-taggable-on

目前,我的代码如下所示:

pthread_detach

但是这样的查询允许SQL注入,应该避免使用。

Rubyonrails.org告诉我们,如何避免此类攻击(http://guides.rubyonrails.org/security.html#sql-injection

例如,使用问号:

@events = Event.tagged_with(params[:search_input])

但是,我不知道,如何清理这个gem的用户输入。我尝试了以下方法:

Model.where("login = ? AND password = ?", entered_user_name, entered_password).first

但这会导致以下错误:

@events = Event.tagged_with("?", "%#{params[:search_input]}%")

任何想法,如何消毒此输入?提前谢谢!

1 个答案:

答案 0 :(得分:2)

在这种情况下,acts_as_taggable_on gem正在为您处理清理。您需要做的就是将params值传递给gem。试试这个:

@events = Event.tagged_with(params[:search_input])

通常,您将使用直接与ActiveRecord交互时尝试的方法。在这种情况下,acts_as_taggable_on使用查询参数机制在内部为您完成所有这些操作。 gem的界面不允许你也使用参数化,这是造成错误的原因。