2012-02-25 6 views
0

Я создаю приложение на Rails, и у меня есть protect_from_forgery в моем application.rb. Я также создал RESTful API для мобильных приложений для связи с использованием данных JSON. Я вижу некоторые сайты, которые утверждают, что для того, чтобы мобильное приложение взаимодействовало с приложением rails, они отключили protect_from_forgery для запросов JSON.Rails protect_from_forgery с мобильными приложениями

Как это решить проблему CSRF? Может ли вредоносный сайт не запрашивать запрос JSON POST, который выполняет нежелательные изменения от имени пользователя?

Таким образом, чтобы решить эту проблему, я решил использовать пользовательские mime-type или, возможно, special key что только мобильное приложение будет использовать, а затем protect_from_forgery выполнить следующие действия:

  1. Проверьте, если CSRF токен присутствует как hidden div (true для веб-приложения и включен по умолчанию).
  2. Если нет, проверьте это special key или mime-type.

Есть ли в любом случае для достижения этой цели или аналогичные проблемы для решения этой проблемы?

Update

Оказывается, что я чрезмерно думал проблему. Rails является «волшебным» и каким-то образом обрабатывает запросы, поступающие из мобильного приложения, автоматически и соответствующим образом, не создавая исключения. Таким образом, по существу, нам не пришлось вносить какие-либо изменения.

Я не совсем понял, как Rails справляется с этим, хотя - педагогически говоря, это может быть интересно узнать для некоторых.

+0

Как создаются запросы от мобильного приложения? – Dad

ответ

2

Вам не нужно использовать ActiveResources. Если вы отправите свой запрос в виде xml, он обходит защиту_from_forgery.

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

Это должно быть довольно просто.

Смежные вопросы