Срок действия токена подделки Anti-request в Asp. net MVC - PullRequest
2 голосов
/ 28 апреля 2020

У меня есть приложение MVC, во время теста приложения пером, команда тестирования Pen подчеркнула, что значение __RequestVerificationToken можно использовать повторно (то есть они могут выдать POST-запрос, используя значение __RequestVerificationToken, которое было сгенерировано для предыдущий запрос страницы или во время предыдущего сеанса входа того же пользователя)

Существует ли какая-либо конфигурация, в которой мы можем контролировать достоверность создаваемого значения __RequestVerificationToken?

cs html

@using (Html.BeginForm("Register", "User", FormMethod.Post, role = "form", novalidate = "false"
{
    @Html.AntiForgeryToken()
    ///// some more code
}

Контроллер

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(parameter)
{
    //// some code 
}

1 Ответ

0 голосов
/ 28 апреля 2020

токены XSRF основаны на сеансе , что означает, что существующий токен может и будет использоваться несколько раз в течение одного сеанса.

Ваш первый контрольный пример недействителен, тот же самый повар ie может быть повторно использован для того же пользователя ... но ваш второй контрольный пример действителен, пользователь не должен иметь возможность повторно использовать тот же токен после выход из системы Убедитесь, что сеанс очищен в вашем методе выхода из системы.

Дополнительная информация о генерации токена XSRF :

Если текущий HTTP-запрос уже содержит токен сеанса анти-XSRF (анти-XSRF cook ie __RequestVerificationToken), из него извлекается токен безопасности. Если HTTP-запрос не содержит токен сеанса анти-XSRF или если извлечение токена безопасности завершается неудачно, будет создан новый случайный токен анти-XSRF.

...