ruby ​​on rails vorbereitete Anweisung für Orakel View / Funktion

8

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%     
Micheal 31.01.2017, 21:23
quelle

2 Antworten

3

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 :

verwenden %Vor%     
ndn 07.02.2017 22:45
quelle
0

Dies wird als vorbereitete Anweisung bezeichnet. Im Dokument finden Sie ein Beispiel, wie Sie es verwenden können.

    
Ivan Bryzzhin 13.02.2017 09:46
quelle