2010-06-02 13 views
29

रेल में, जब मैं एक उपयोगकर्ता दिए गए मूल्य से खोजने के लिए और एसक्यूएल इंजेक्शन से बचने के (अक्षर लोप से बचने और की तरह) के लिए मैं कुछ इस तरह कर सकते हैं चाहते हैं:रेल एसक्यूएल इंजेक्शन?

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

मुझे पता है कि ऐसा करने का सुरक्षित तरीका नहीं (संभव एसक्यूएल इंजेक्शन) यह है:

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

मेरा प्रश्न है, तो निम्न विधि एसक्यूएल इंजेक्शन को रोकने या नहीं करता है?

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

उत्तर

37

हाँ, ऐसा करता है। केवल दूसरा खतरनाक है।

+0

आपकी सीधी प्रतिक्रिया के लिए धन्यवाद। –

5

+1 @fphilipe और @yuval railscast से 5 मिनट के वीडियो और आतंक विरोधी मार्गदर्शिकाओं से rails guide

+0

धन्यवाद, मैंने इसे पहले ही देखा है लेकिन यह मेरे प्रश्न को कवर नहीं करता है (अंतिम खोज से संबंधित) –

8

एक good reference इस एक की जाँच करें।

+0

धन्यवाद, यह प्रासंगिक है। –

संबंधित मुद्दे