2012-02-25 2 views
0

레일스에 앱을 만들고 있는데, application.rbprotect_from_forgery이 있습니다. 또한 JSON 데이터를 사용하여 통신 할 수있는 모바일 앱용 RESTful API를 구축했습니다. 모바일 앱이 레일 애플리케이션과 상호 작용하기 위해 JSON 요청을 위해 protect_from_forgery을 사용 중지한다고 주장하는 사이트가 있습니다.레일즈는 모바일 앱으로 protect_from_forgery를 보호합니다.

CSRF의 문제점을 어떻게 해결합니까? 악의적 인 사이트가 사용자를 대신하여 바람직하지 않은 변경을 수행하는 JSON POST 요청을 가질 수 없습니까? CSRF 경우

  1. 확인 :

그래서,이 문제를 해결하기 위해, 나는 다음을 수행 protect_from_forgery이 아마도 사용자 정의 mime-type 또는 전용 모바일 앱을 사용하는 것 special key를 사용하기로 결정 토큰은 hidden div (웹 앱의 경우 true이고 기본적으로 포함됨)으로 표시됩니다.

  • 존재하지 않는 경우 special key 또는 mime-type을 확인하십시오.
  • 이 문제를 해결하기 위해이 방법을 사용해도 되겠습니까?

    업데이트

    내가 문제를 과도하게 생각했던 것으로 나타났다. Rails는 "마법 같은"것이며 예외를 발생시키지 않고 자동으로 적절하게 모바일 앱에서 오는 요청을 처리했습니다. 그래서 본질적으로 수정을 할 필요가 없었습니다.

    레일즈가 어떻게 이것을 달성했는지는 확실히 확인하지 못했습니다. 교육적으로 말해서, 이것은 여전히 ​​일부를 알고 흥미로울 수 있습니다.

    +0

    모바일 앱의 요청은 어떻게 작성됩니까? – Dad

    답변

    2

    ActiveResources를 사용할 필요가 없습니다. xml로 요청을 보내면 protect_from_forgery를 무시합니다.

    curl -H "Content-Type: text/xml" -d "<support-request><from>...</from></support-request>" -X POST http://localhost:3000/support_requests.xml -i 
    

    아주 간단해야합니다.