31 votes

Rails injection SQL?

Dans Rails, lorsque je veux trouver par un utilisateur une valeur donnée et éviter l'injection SQL (échapper aux apostrophes et autres), je peux faire quelque chose comme ceci:

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

Je sais qu'une façon dangereuse de le faire (injection SQL possible) est la suivante:

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

Ma question est la suivante: la méthode suivante empêche-t-elle ou non l'injection SQL?

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

39voto

Philipe Points 1838

Oui. Seul le second est dangereux.

8voto

Ed_ Points 1114

Une bonne référence des guides RoR.

5voto

Mohit Jain Points 9959

+1 @fphilipe et @yuval Regardez cette vidéo de 5 minutes de railscast et celle de rails guide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X