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
выполните следующее:
- Проверьте, присутствует ли токен csrf как
hidden div
(верно для веб-приложения и включено по умолчанию). - Если нет, проверьте это
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
Это должно быть довольно просто.