Я начал использовать AntiForgeryToken в некоторых моих формах, чтобы предотвратить подделку межсайтовых запросов. Однако я получаю странное поведение и просто хотел уточнить, это ошибка или просто я что-то делаю не так. Я использую звонок Html.AntiForgeryToken()
в своей форме. Затем я использую атрибут [ValidateAntiForgeryToken]
в методе действия, в который отправляется форма. На данный момент я не использую соль.
Насколько я понимаю, Html.AntiForgeryToken()
создает скрытый ввод с именем __RequestVerificationToken
и файлом cookie с именем __RequestVerificationToken_Lw__
, которые оба должны содержать одно и то же значение.
Однако я испытываю такое поведение:
- Файл cookie всегда имеет одинаковое значение независимо от того, сколько раз вы
ПОЛУЧИТЬ страницу
- Скрытый ввод имеет другое значение каждый раз, когда вы получаете страницу
- ValidateAntiForgeryToken проверяется каждый раз, даже с
другой сайт в сценарии CSRF.
- Если я изменю значение скрытого ввода на стороннем сайте,
токен не проверяется (ожидаемое поведение, но почему он проверяет
когда значение скрытого ввода / файла cookie отличается?)
У кого-нибудь есть идеи?