2012-02-12 1 views
3

그래서이 조건을내 레일을 찾을 수있는 조건을 벗어나야합니까? OK

conditions = {} 
conditions[:state] = params[:state] if params[:state] 
@apps = current.apps.paginate(:include => :user, :conditions => conditions, :order => "users.first_name, users.last_name") 

을 가지고 내가 문자열에 보내고 있기 때문에 내 루트 파일

map.apps_wishlist '/apps/wishlist', :controller => 'apps', :action => 'index', :state => 'wishlist' 

을 가지고 내가 보안상의 이유로 든 SQL을 탈출 만약 그렇다면 어떻게 최고입니다한다 [: 상태] 방법은

누군가가 그들이 params를 생각 제안 그렇게하는 보안상의 이유로 SQL 쿼리에 넣을 때 탈출해야

답변

5

그들은 그들이 무슨 말을하고 있는지 모른다. 만큼 당신처럼 하나

SomeModel.where(:conditions => {:state => params[:state]}) 
#or 
SomeModel.find(:conditions => {:state => params[:state]}) 
#or 
SomeModel.where("state = ?", params[:state]) 

액티브 모두가 위에서 제공 한 코드가 잘 그래서 당신이 완전히에서 SQL을 구축한다면 /이 적용되지 않는 유일한 경우는, 그 자체를 이스케이프 처리합니다 자신, 당신은 find_by_sql, execute를 사용하는 경우, 즉 하지

SomeModel.where("state = #{params[:state]}") 

을 하는가 등등 당신은 탈출에 대한 책임이 있습니다. 그래도 내 말을 듣지 마라. 레일을보고 싶을 수도 있습니다. security guide

관련 문제