2010-06-02 21 views
29

W Rails, gdy chcę znaleźć przez użytkownika danej wartości i uniknąć SQL injection (uciec apostrof i tym podobne) można zrobić coś takiego:Rails SQL injection?

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

wiem, że niebezpieczny sposób to zrobić (możliwe SQL injection) to:

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

Moje pytanie brzmi, czy następująca metoda zapobiega iniekcji SQL, czy nie?

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

Odpowiedz

37

Tak, robi. Tylko ten drugi jest niebezpieczny.

+0

Dziękuję za bezpośrednią odpowiedź. –

5

+1 @fphilipe i @yuval Zaznacz to 5 min wideo z railscast i ten jeden z rails guide

+0

Dzięki, widziałem już to, ale nie obejmuje ono mojego pytania (odnoszącego się do ostatniego znaleziska). –

Powiązane problemy