Programing

쿼리와 같은 안전한 ActiveRecord

lottogame 2020. 10. 26. 07:38
반응형

쿼리와 같은 안전한 ActiveRecord


LIKE 쿼리를 작성하려고합니다.

순수한 문자열 요구 사항이 안전하지 않다는 것을 읽었지만 안전한 LIKE 해시 쿼리를 작성하는 방법을 설명하는 문서를 찾을 수 없습니다.

가능할까요? SQL Injection을 수동으로 방어해야합니까?


쿼리 문자열이 제대로 삭제되었는지 확인하려면 배열 또는 해시 쿼리 구문을 사용하여 조건을 설명합니다.

Foo.where("bar LIKE ?", "%#{query}%")

또는:

Foo.where("bar LIKE :query", query: "%#{query}%")

그것은이 가능성이있는 경우 query인클루드 수있는 %문자를 당신은 위생적으로 필요 querysanitize_sql_like첫째 :

Foo.where("bar LIKE ?", "%#{sanitize_sql_like(query)}%")
Foo.where("bar LIKE :query", query: "%#{sanitize_sql_like(query)}%")

Arel을 사용하면 다음과 같은 안전하고 이식 가능한 쿼리를 수행 할 수 있습니다.

title = Model.arel_table[:title]
Model.where(title.matches("%#{query}%"))

PostgreSQL의 경우

Foo.where("bar ILIKE ?", "%#{query}%") 

넌 할 수있어

MyModel.where(["title LIKE ?", "%#{params[:query]}%"])

참고 URL : https://stackoverflow.com/questions/26094430/safe-activerecord-like-query

반응형