레일 3에서 CSRF 토큰 끄기


105

iPhone 애플리케이션에 일부 API를 제공하는 레일스 앱이 있습니다. 올바른 CSRF 토큰을 얻지 않고 리소스에 간단히 게시 할 수 있기를 원합니다. 여기 stackoverflow에서 볼 수있는 몇 가지 방법을 시도했지만 더 이상 레일 3에서 작동하지 않는 것 같습니다.

도와 주셔서 감사합니다.

답변:


175

CSRF를 비활성화하려는 컨트롤러에서 다음을 확인하십시오.

skip_before_action :verify_authenticity_token

또는 몇 가지 방법을 제외한 모든 항목에 대해 비활성화하려면 :

skip_before_action :verify_authenticity_token, :except => [:update, :create]

또는 지정된 방법 만 비활성화하려면 :

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

추가 정보 : RoR 요청 위조 방지


1
이는 브라우저에서 액세스 할 수있는 일반 양식과 API 엔드 포인트가 혼합 된 앱에 대한 정답입니다. Markus Proske의 대답은 앱에 브라우저에서 액세스 할 수있는 양식이 없을 것이라고 확신하는 경우 정확할 것입니다.
Asfand Qazi 2014

정확히 어디로 갑니까? 컨트롤러가 gem의 일부라면?
계정 던지기

이 매우 유사한 질문에 대답 할 수 있는지 물어봐도 될까요? stackoverflow.com/questions/50159847/…

105

Rails3에서는 컨트롤러에서 특정 메소드에 대해 csrf 토큰을 비활성화 할 수 있습니다.

protect_from_forgery :except => :create 

12
읽는 모든 사람을 위해 이것이 들어가야 할 내용입니다 ApplicationController. 아래의 Mike Lewis의 응답 ( skip_before_filter :verify_authenticity_token)은 컨트롤러가에서 상속한다고 가정하고 컨트롤러별로 비활성화하는 방법입니다 ApplicationController.
NudeCanalTroll 2013

이것이 안전하지 않은 것 같습니다 . stackoverflow.com/questions/10676018/… . 어떻게 생각해? 맞나요?
사이트

@NudeCanalTroll 당신은 내가 원하는 컨트롤러에 이것을 넣는 것을 의미합니까?
BlackDivine 2013 년

이 매우 유사한 질문에 대답 할 수 있는지 물어봐도 될까요? stackoverflow.com/questions/50159847/…

32

레일 4, 당신은 지금 쓸 수있는 옵션이 skip_before_action대신을 skip_before_filter.

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

또는

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token

1
차이점이 뭐야?
Adam D. Ruppe 2015

이 매우 유사한 질문에 대답 할 수 있는지 물어봐도 될까요? stackoverflow.com/questions/50159847/…

존 샘, 시간이있을 때 시도해 볼게요.
jason328
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.