다른 답변을 파괴 Rails에 대해서도 잘 대답하면 제안을 따르면 잘 작동 할 것입니다. 보다 일반적인 설정에서 직접 처리해야하는 경우 일반적으로 정규 표현식을 사용하여 예상되는 형식의 값을 추출 할 수 있습니다. 이것은 정수 ID를 사용하면 정말 간단합니다. 다음과 같이 생각하십시오.
if params[:id] =~ /(\d+)/
safe_id = $1.to_i
# do something with safe_id now
end
문자열 및 임의 데이터를 처리 할 때 좀 더 복잡해집니다. 이러한 데이터를 처리해야하는 경우 데이터베이스 어댑터에서 사용 가능한 인용 방법을 사용할 수 있습니다. 레일이 궁극적으로 일관된 인터페이스로 출시된다
safe_string = ActiveRecord::Base.connection.quote(unsafe_string)
대부분의 데이터베이스 시스템의 경우이 특별한 방식으로 작은 따옴표와 백 슬래시를 처리합니다.
레일스 외부에 있다면 데이터베이스 어댑터와 관련된 인용 방법을 사용해야하지만 사용법은 비슷합니다.
테이크 아웃 : 데이터가 특정 형식이있는 경우
이
- ,
- 그렇지 않으면 정규 표현식의 형식을 시행 A의 사용에 대한 데이터 "안전한"확인하기 위해 데이터베이스 어댑터의 인용 기능을 사용 쿼리
- 다양한 방법과 조건을 제대로 사용하면 레일스가 대부분을 처리합니다.
감사합니다. 나는 이것이 SQL 삽입을 피할 수있는 최선의 방법이라고 생각한다. to_i를 사용하는 데있어서 단점이 있습니까? –
특히,하지만이 pududo 검증의 요점을 보지 못했습니다. – apneadiving
레일이 당신을 위해 처리하므로 코드를 오염시키지 마십시오 – apneadiving