Ich habe den folgenden Code, der eine Oracle-Ansicht wie folgt ausführt:
%Vor%Die Ausgabe der obigen Abfrage lautet wie folgt:
%Vor%Das Problem besteht darin, dass die obige Abfrage eine SQL-Injection-Schwachstelle aufweist.
Also habe ich versucht, eine Prepare-Anweisung wie folgt hinzuzufügen:
%Vor%Ich bekomme jetzt den folgenden Fehler:
NoMethodError: undefinierte Methode 'type' für '' ALL '': String: SELECT * FROM TABLE (FN_REQRESP (?,?,?,?,?,?,?,?,?))
Es sind die einfachen Anführungszeichen, die das vermasseln. Ich glaube daran. Gibt es einen Weg, dies zu überwinden?
BEARBEITEN: Ich habe die Antwort von NDN und den folgenden Fehler versucht:
%Vor% Mit Blick auf die Quelle , binds
wird auf magische Art und Weise erzeugt und Sie müssen auch ein benanntes prepare: true
Argument übergeben.
Früher funktionierte es auch anders in älteren Versionen .
Um dir das Problem zu ersparen, kannst du einfach #sanitize
:
Dies wird als vorbereitete Anweisung bezeichnet. Im Dokument finden Sie ein Beispiel, wie Sie es verwenden können.
Tags und Links sql ruby ruby-on-rails-3 oracle prepared-statement