Проблемы с CSRF в браузере Instagram (возможно, проблема со скрытым вводом)

#spring #web #browser #instagram #http-status-code-403

#spring #веб #браузер #Instagram #http-status-code-403

Вопрос:

Наше приложение Spring используется для бронирования различных услуг. Обычно наши клиенты перечисляют свои услуги в своей биографии в Instagram. Когда пользователь нажимает на ссылку в биографии Instagram, наше приложение открывается в браузере Instagram.

В критической точке потока наше приложение обнаруживает 403. Это 403 происходит не всегда. Но когда это происходит, это происходит только для некоторых пользователей на iPhone, которые перемещаются в браузере Instagram. Никакая другая комбинация устройства / браузера не вызывает этого. Этот 403 вызывает у нас серьезные проблемы.

Токен CSRF включен в качестве скрытого элемента в отправляемую форму, что приводит к 403. Возможно, браузер Instagram иногда игнорирует этот токен, но как и почему, мне не известно.

Кто-нибудь еще испытывал что-нибудь подобное?

Спасибо

Комментарии:

1. Вы нашли решение этой проблемы?

2. @WayBehind, отрицательный. Все еще живу с этим. Вы видите что-то подобное?

3. Спасибо за ответ. Да, у нас возникли некоторые проблемы с формой приложения Django, отображаемой через IFRAME. Браузер Insta отправляет не все значения. Мы даже пытались отключить требования CSRF на целевой странице, но безуспешно. По-видимому, Insta использует UIWebView, который является устаревшей версией старого браузера Safari.

4. Очень неприятно, особенно потому, что большая часть трафика наших клиентов поступает через Insta. В качестве обходного пути мы добавили некоторый код, который уведомляет нас, когда это происходит. Затем мы отправляем конечному пользователю электронное письмо и советуем ему перейти через Safari или Chrome. Мы пытались уведомить Insta, но с таким же успехом мы могли разговаривать с полем чертополоха. Если мы наткнемся на решение (больше не будем активно пытаться исправить, поскольку потратили на это так много времени), я обязательно опубликую здесь. Кстати, я не думаю, что IFRAME является частью проблемы. По крайней мере, мы не используем IFRAME. Мы также попробовали некоторые трюки с CSRF, но это не помогло.

5. Спасибо за информацию. Дайте мне знать, если найдете решение!

Ответ №1:

У меня была эта проблема с одним из моих проектов Ruby on Rails, где люди переходили к форме непосредственно по ссылке профиля Instagram, и время от времени мы получали 422.

Журналы показали, что браузер приложения Instagram отправил файл cookie CSRF, который отличался от токена в соответствующем скрытом поле формы, чего не должно быть, если страница правильно загружена в браузере приложения. Мы смогли воспроизвести его в реальном времени на одном устройстве, и с точки зрения пользователя загрузка страницы и навигация выглядели совершенно нормально. Может ли это быть связано с кэшированием?

Ранее у нас уже были заголовки Rails по умолчанию max-age: 0 , но мы решили просто установить

 Cache-Control: no-cache, no-store
 

для каждой критической страницы и посмотрите, не изменилось ли что-нибудь.

С тех пор проблема, похоже, исчезла.

Комментарии:

1. К сожалению, это не решило проблему для нас.