2010-06-02 85 views
29

在Rails中,當我想通過一個用戶給定值找到並避免SQL注入(逃避撇號等),我可以做這樣的事情:Rails SQL注入?

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

我知道,這樣做都是不安全的(可能的SQL注入)是這樣的:

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

我的問題是,下列方法是否阻止SQL注入?

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

回答

37

是的,它的確如此。只有第二個是危險的。

+0

感謝您的直接回復。 – 2010-06-02 23:48:09

5

+1 @fphilipe和@yuval檢查從railscast這5分鐘的視頻,這一次從rails guide

+0

謝謝,我已經看到了這個,但它不包括我的問題(關於最後的發現) – 2010-06-02 23:48:33

8

一個good reference從RoR的指南。

+0

謝謝,這是相關的。 – 2010-06-02 23:49:31