Как работает подход Token Verification для предотвращения CSRF в asp.net mvc3 - PullRequest
0 голосов
/ 15 февраля 2012

Я читал о том, как использовать <@ Html.AntiForgeryToken ()> для создания зашифрованного значения в скрытом поле, которое также будет соответствовать другому значению, которое хранится в виде файла cookie сеанса в браузере пользователя.

Но мои вопросы: - 1. Будет ли также зашифровано значение в файле cookie сеанса, 2. и если да, то как [ValidateAntiforgeryToken] на контроллере действий узнает, как расшифровать оба значения и сопоставить их?

BR

1 Ответ

1 голос
/ 15 февраля 2012

будет также зашифровано значение в файле cookie сеанса

Да.Он представляет токен.И это то же значение, что и для скрытого поля.На самом деле это Html.AntiForgeryToken() помощник, который делает 2 вещи.Он генерирует токен и помещает его в скрытое поле, а также устанавливает cookie с тем же значением.

, и если да, то как [ValidateAntiforgeryToken] на контроллере действий будет знать, как расшифроватьоба значения и совпадают с ними?

Он использует тот же алгоритм шифрования / дешифрования, который используют классические WebForms для шифрования / дешифрования ViewState.Это симметричный алгоритм шифрования, основанный на ключах машины.Вот почему, если вы работаете в веб-ферме, вы должны убедиться, что у вас есть одинаковые машинные ключи на всех узлах, потому что, если токен защиты от подделки был сгенерирован и зашифрован на одном узле веб-фермы, он не сможет быть дешифрован на другомузел, когда отправляется запрос POST, если машинные ключи не совпадают.

...