Мобильные браузеры иногда не пересылают антивирусный токен cookie - PullRequest
2 голосов
/ 04 октября 2019

Наше приложение является посредником по оплате, где наш процесс оформления заказа поддерживает как перенаправление, так и оформление iframe. Для предотвращения CSRF-атак мы используем стандартную реализацию MVC AntiForgeryToken. Тем не менее, небольшой процент наших проверок завершается неудачно с ошибкой, указывающей на отсутствие файла cookie AntiForgeryToken.

Из журналов мы суммировали, что эти ошибки возникают только тогда, когда пользовательский агент является либо Mobile Safari, либо редко браузером Samsung, различных версий и платформ. версии.

Мы не можем быть уверены, что эти ошибки возникают только тогда, когда они встроены в iframe, однако мы не смогли надежно воспроизвести эти ошибки из перенаправленной или встроенной версии. Еще более удивительным является то, что стандартные проблемы с файлами cookie Safari и сторонних производителей также не объясняют этого, поскольку во всех случаях мы можем судить по журналам о наличии файла cookie ASP.NET_SessionId.

Мы попытались установить заголовок P3Pв ответе: HttpContext.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");, но это не помогло.

Кроме того, мы уверены, что это происходит и для законных пользователей, а не только для злоумышленников (при условии, что любой из них является вредоносным). И чтобы убедиться в очевидности, все эти запросы содержат запись формы HTTP, содержащую __RequestVerificationToken, но без файла cookie.

Кроме того, все зарегистрированные ошибки содержат следующее: The required anti-forgery cookie "__RequestVerificationToken_L3Yx0" is not present. Мы не былив состоянии объяснить приложение _L3Yx0. Чтобы быть ясным, хотя, приложение не проблема, или, по крайней мере, не единственная, потому что мы не получаем cookie в первую очередь.

Какие возможные объяснения есть для этого странного поведения, и что можетмы делаем, чтобы предотвратить проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...