Я создаю приложение на 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 достигает этого, хотя - с педагогической точки зрения это может быть интересно для некоторых.