2010-06-02 82 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