2
그래서, 이것은 실제로 Rails 패턴 질문입니다.'#show'동작에서 ID를 필터링/검증하는 가장 좋은 방법은 무엇입니까?
나는 레일즈 3.0.9 응용 프로그램을 가지고 있습니다. 우리는 Airbrake를 사용하여 오류를 감지하고보고하며, 이는 프로그램 설계에서 마지막 몇 가지 누설을 조정하는 데 도움이됩니다.
잘못된 입력으로 로봇 (Google, 크롤러 등) 만 공격합니다.
ActiveRecord::StatementInvalid: PGError: ERROR: invalid input syntax for integer:
"google_ads_dbg" LINE 1: ....message_thread_id WHERE "message_threads"."id" =
'google_ad...^: SELECT "message_threads".* FROM "message_threads" INNER JOIN
"message_thread_users" ON "message_threads".id = "message_thread_users".message_thread_id
WHERE "message_threads"."id" = 'google_ads_dbg' AND (("message_thread_users".user_id =
33899)) LIMIT 1
평온한 경로 :
resource :inbox do
resources :messages
end
MessagesController 번호의 첫 번째 줄은
@message_thread = current_user.message_threads.find(params[:id])
보여 내가 입력의 정수 다움을 검증하기 위해 모든 .find params[:id]
전화를 앞에합니까? 내 routes.rb에 resource
행마다 :constraints => {:id => /[0-9]+/}
행을 붙이시겠습니까?
이것은 매우 의미가 있습니다. 라우팅 스코프를 잊어 버렸습니다. – nessur
다음과 같은 질문이 있습니다.이 솔루션은 일반적인 라우팅 패턴의 일부가 아닌 드문 입력 문제입니까? 사이트 보안 및 안정성이 필수적인 것 같습니다. – nessur