Rails ActiveRecord Escape-Variable in der Join-Klausel

8

Diese Abfrage funktioniert, ist aber völlig offen für SQL-Injection:

%Vor%

Wie kann ich die CID-Variable korrekt umgehen? Der conditions -Parameter erlaubt das Format ['foo = ?', bar] für diesen Zweck, aber joins nicht.

Ich möchte nicht find_by_sql verwenden, weil ich dann die Joins und Bedingungen hinzufügen müsste, die Teil des Standardbereichs des Modells sind (das wäre nicht DRY).

Bearbeiten: Meine Tabellenstruktur ist im Wesentlichen das:

%Vor%

Beachten Sie, dass es sich um eine schreibgeschützte Datenbank handelt, mit der Rails nur eingeschränkt befasst ist. Ich plane nicht, Modelle für alle Tische aufzustellen; Ich möchte nur eine einfache Abfrage wie oben beschrieben durchführen, ohne mich SQL Injection Attacken auszusetzen.

    
Mark Eirich 06.08.2012, 15:56
quelle

2 Antworten

14

Die Antwort, die ich gefunden habe, ist die Verwendung der Methode .sanitize für das Modell:

%Vor%

Wenn Sie eine bessere Lösung finden, posten Sie sie bitte!

    
Mark Eirich 06.08.2012, 16:58
quelle
2

Das scheint eher das zu sein, was Sie versuchen wollten.

%Vor%     
Conan Morris 20.10.2014 21:43
quelle