/ / Protezione dell'iniezione SQL in Rails: sql, ruby-on-rails, ruby-on-rails-4, sql-injection

Protezione dell'iniezione SQL in Rails: sql, ruby-on-rails, ruby-on-rail-4, sql-injection

Quindi .. qualcuno sta cercando di farsi strada nel mio server ..

dai registri vedo che stanno provando a fare alcuni attacchi basati su php, ma voglio comunque mitigarlo ..

stanno cercando di iniettare SQL tramite questo URL

/sign_in?t=login"+union+select+char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33)+--+

quindi in un ambiente Rails, questo va nell'hash params come

{"t"=>"login" union select char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33) -- "}

da quando ho inserito nella whitelist il file t parametro, non è un problema qui, ma voglio assicurarmi che altri URL vadano bene se dimentico di inserire nella whitelist

Innanzitutto, non sono sicuro di ciò che stanno cercando di ottenere con questo attacco.

Secondo, su a

Model.find params[:id]

Rails pulirà l'input in questo caso? o devo farlo da solo?

risposte:

0 per risposta № 1

Finché non costruisci la tua condizione usando stringhe pure, come:

User.where("t LIKE "%#{params[:t]}%"")

Invece, dovrebbero essere le condizioni di matrice seguenti:

User.where("t = ?", params[:t])

Penso che sia abbastanza sicuro nella maggior parte delle applicazioni Rails.

Leggi la lettura a: http://guides.rubyonrails.org/security.html#sql-injection

Quindi, penso che non è necessario sfuggire alla stringa da soli se si utilizza il metodo Rails corretto (che si occuperà della parte di pulizia per te)