2012-12-17 5 views
2

내가 쿼리하고 있어요 : 기능을 동일하게 유지하면서SQL 삽입을 피하는 방법은 무엇입니까?

@results = RubyGem.where(
    'name LIKE ?', "%#{searchphrase}%" 
    ).paginate(
     :page => params[:page], 
     :per_page => 50, 
     :group => "name", 
     :order => [ 
      "CASE WHEN name like '#{searchphrase}%' THEN 0 
      WHEN name like '% %#{searchphrase}% %' THEN 1 
      WHEN name like '%#{searchphrase}' THEN 2 
      ELSE 3 END, name" 
     ] 
    ) 

을하지만이 주사에 취약 확신 ... 누군가가, 그렇지 그래서이 문제를 해결할 수 있을까요? Ruby on Rails와 MySQL을 사용하고 있습니다.

+0

비슷한 질문 : http://stackoverflow.com/questions/12127496/is-this-prone-to-sql-injection이 작동하지 않습니다 –

답변

2
@results = RubyGem.where(
    'name LIKE ?', "%#{searchphrase}%" 
).paginate(
    :page => params[:page], 
    :per_page => 50, 
    :group => "name", 
    :order => [ 
     "CASE WHEN name like ? THEN 0 WHEN name like THEN 1 WHEN name like '%#{searchphrase}' THEN 2 ELSE 3 END, name", "#{searchphrase}%", "% %#{searchphrase}% %" 
    ] 
) 
+0

... 내가 그것을 알아 냈 – areke

+0

하지만 이후 당신은 대답 한 유일한 사람이었습니다 ... 고마워요! – areke

관련 문제