AntiForgery.GetTokens: какова цель параметра oldCookieToken?
Мы пишем мобильное приложение iOS в objective-c, которое делает сообщения в нашем приложении ASP.NET MVC. На iPhone, стек HTTP (и файлы cookie и т.д.), По-видимому, используются совместно с Safari. Это оставляет нас открытыми для атак XSRF, поэтому, если я не ошибаюсь, нам нужно защитить POST с помощью анти-поддевных токенов и защитить наши методы контроллера с помощью ValidateAntiForgeryTokenAttribute
.
Я рассмотрю этот вопрос, сказав, что я не правильно понимаю механизм, с помощью которого генерируются и проверяются токены антифригии... в частности, термин "nonce", используемый в этом контексте, несколько мистический.
Поскольку мы не доставляем HTML клиенту, мы не можем использовать стандартный @Html.AntiForgeryToken()
, поэтому вместо этого мы должны использовать AntiForgery.GetTokens
для приобретения и распространять токены нашим клиентам. У этого есть таинственный первый параметр: oldCookieToken
. На данный момент я просто установил его null
, и все, кажется, работает нормально. Так может ли кто-нибудь сказать мне... зачем использовать старый токен для алгоритма генерации токена? Если только один токен выдается нашему приложению iOS и повторно используется для нескольких сообщений, это будет проблематично?
Ответы
Ответ 1
AntiForgery.GetTokens
будет пытаться повторно использовать старый токен cookie для целей проверки. Поэтому, если у вас уже есть токен проверки, который вы хотите повторно использовать, он попытается использовать его вместо создания нового. Если старый токен недействителен, он будет генерировать новый и использовать его вместо этого.
Итак, допустимо прохождение null
до oldCookieToken
. Он просто сообщает GetTokens
всегда генерировать новый токен cookie.