반응형
쿼리와 같은 안전한 ActiveRecord
LIKE 쿼리를 작성하려고합니다.
순수한 문자열 요구 사항이 안전하지 않다는 것을 읽었지만 안전한 LIKE 해시 쿼리를 작성하는 방법을 설명하는 문서를 찾을 수 없습니다.
가능할까요? SQL Injection을 수동으로 방어해야합니까?
쿼리 문자열이 제대로 삭제되었는지 확인하려면 배열 또는 해시 쿼리 구문을 사용하여 조건을 설명합니다.
Foo.where("bar LIKE ?", "%#{query}%")
또는:
Foo.where("bar LIKE :query", query: "%#{query}%")
그것은이 가능성이있는 경우 query
인클루드 수있는 %
문자를 당신은 위생적으로 필요 query
로 sanitize_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
반응형
'Programing' 카테고리의 다른 글
지도 작업에서 튜플 풀기 (0) | 2020.10.26 |
---|---|
MongoDB는 서버 충돌 후 시작되지 않습니다. (0) | 2020.10.26 |
한 데이터베이스에서 다른 데이터베이스로 테이블 값을 삽입하는 방법은 무엇입니까? (0) | 2020.10.26 |
지난 10 일 동안의 날짜로 기록을 나열하는 방법은 무엇입니까? (0) | 2020.10.26 |
Class.getName () 클래스의 이름 만 가져옵니다. (0) | 2020.10.26 |