2010-06-02 34 views
29

In Rails, quando voglio trovare da un dato valore di utente ed evitare SQL injection (fuga apostrofi e simili) che posso fare qualcosa di simile:Iniezione SQL delle rotaie?

Post.all(:conditions => ['title = ?', params[:title]]) 

So che un modo non sicuro di fare questo (possibile SQL injection) è questo:

Post.all(:conditions => "title = #{params[:title]}") 

la mia domanda è, fa il seguente metodo prevenire SQL injection o no?

Post.all(:conditions => {:title => params[:title]}) 

risposta

37

Sì, lo fa. Solo il secondo è pericoloso.

+0

Grazie per la vostra risposta diretta. –

5

+1 @fphilipe e @yuval Selezionare questa 5 min video da railscast e questo da rails guide

+0

Grazie, l'ho già visto ma non copre la mia domanda (pertinente all'ultima ricerca) –

Problemi correlati