2016-05-31 1 views
1

Im Moment mein Code sieht wie folgt sanieren:Wie Benutzereingabe für den Edelstein wirkt-as-markierbare-on, Ruby on Rails

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

Aber eine solche Abfrage ermöglicht SQL-Injections und sollte vermieden werden.

Rubyonrails.org sagt uns, wie solche Angriffe zu vermeiden (http://guides.rubyonrails.org/security.html#sql-injection)

Zum Beispiel mit questionmarks:

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

aber ich weiß nicht, wie die Benutzereingabe sanieren für dieses Juwel. Ich habe versucht, die folgenden:

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

aber dies führt zu dem folgenden Fehler:

TypeError (no implicit conversion of Symbol into String): 

Irgendwelche Ideen, wie diese Eingabe zu sanieren? Danke im Voraus!

Antwort

2

In diesem Fall behandelt der Edelstein acts_as_taggable_on die Desinfektion für Sie. Alles, was Sie tun müssen, ist Ihre params Wert an den Edelstein übergeben. Versuchen Sie das:

Normalerweise würden Sie den Ansatz verwenden, den Sie versuchten, wenn Sie direkt mit ActiveRecord interagieren. In diesem Fall erledigt acts_as_taggable_on all das intern für Sie, indem es den Abfrageparametermechanismus verwendet. Die Schnittstelle zum Schmuckstück erlaubt Ihnen nicht, auch die Parametrisierung zu verwenden, die den Fehler verursacht hat.

+0

Ich habe das folgende Problem im Repo des Edelsteins gefunden: https://github.com/mbleigh/acts-as-taggable-on/issues/670 Stimmst du nicht zu oder geht es um etwas anderes? – Mauddev

+0

Das Problem scheint anders zu sein als diese Frage. Diese Frage fragt nach der Bereinigung für die Verwendung mit SQL (ActiveRecord). Das Problem, das Sie verknüpft haben, fragt, wie Sie sicherstellen können, dass die Parsing-Tags ordnungsgemäß ausgeführt werden, und es wird empfohlen, den Standardparser zu verwenden. Das sind wirklich unterschiedliche Anliegen. –