Rails protect_from_forgery с мобильными приложениями

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

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

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

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

Есть ли способ достичь этого или подобного, чтобы противостоять этой проблеме?

Обновить

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

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

1 ответ

Вам не нужно использовать 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

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

Другие вопросы по тегам