2016-06-25 8 views
1

ich folgende Zeile habe, die von SQL-Injektion durch eine statische Code-Analyse vermutet wurde:SQL-Injection in Rails in Where-Klausel

Admin.joins(:accounts_admins).where(user_id: params[:user_u 
ser_id], "members.account_id" => @account.id).first 

Für mich sieht es sicher als parametrisierte Abfrage verwenden. Lass es mich wissen, wenn jemand anders denkt.

+0

Die Dokumente beantworten diese Frage: http://guides.rubyonrails.org/security.html#sql-injection –

Antwort

1

Sie haben Recht; Rails konvertiert die WHERE-Klausel, um gebundene Parameter zu verwenden und somit das Risiko einer SQL-Injektion zu vermeiden.

Das heißt, als eine bewährte Methode sollten Sie strong_parameters oder eine andere Form der Parametervalidierung nutzen. Wenn Ihr Code geschrieben wird, bewirkt ein Nullwert, dass Rails einen WHERE user_id IS NULL Ausdruck einfügt. Das ist wahrscheinlich kein Problem, aber in einigen Fällen kann es zu unbefugtem Zugriff führen.