Vermeiden Sie SQL-Injektion mit connection.execute

8

Wenn eine Abfrage nicht effizient mit ActiveRecord ausgedrückt werden kann, wie kann ActiveRecord::Base.connection.execute bei der Interpolation von übergebenen params -Attributen sicher verwendet werden?

%Vor%     
ave 06.02.2015, 14:03
quelle

2 Antworten

8

Sie können die Methoden in ActiveRecord :: Sanitization :: ClassMethods verwenden.

>

Sie müssen vorsichtig sein, da sie geschützt sind und daher nur für ActiveRecord::Base subclasses verfügbar sind.

Innerhalb einer Modellklasse könnten Sie etwas tun wie:

%Vor%

Sie können send die Methode auch auf der Konsole ausprobieren:

%Vor%     
Shadwell 06.02.2015, 14:24
quelle
2

ActiveRecord verfügt über eine Methode Bereinigen , mit der Sie die Abfrage zuerst bereinigen können. Vielleicht können Sie sich das ansehen: Ссылка

Ich würde allerdings sehr vorsichtig sein, wenn ich Parameter direkt so einfüge. Welches Problem tritt auf, wenn Sie ActiveRecord nicht verwenden können?

    
coding-bunny 06.02.2015 14:20
quelle