MVC 2 AntiForgeryToken - Почему симметричное шифрование + IPrinciple?

Мы недавно обновили наше решение MVC 2, и это обновило путь который AntiForgeryToken работы. К сожалению, это больше не соответствует нашей платформе Ajax.

Проблема состоит в том, что MVC 2 теперь использует симметричное шифрование для кодирования некоторых свойств о пользователе, включая пользователя Name свойство (от IPrincipal). Мы можем надежно зарегистрировать нового пользователя, использующего Ajax, после которого последующие вызовы Ajax будут недопустимы, когда анти-маркер подделки изменится, когда пользователю предоставили новый принципал. Существуют также другие случаи, когда это может произойти, такие как пользователь, обновляющий их имя и т.д.

Мой основной вопрос состоит в том, почему MVC 2 даже потрудился использовать симметричное шифрование? И затем почему это заботится о свойстве имени пользователя на принципале?

Если мое понимание будет корректно затем, то любой случайный общий секрет сделает. Основной принцип - то, что пользователь будет отправлен cookie с некоторыми определенными данными (HttpOnly!). Этот cookie затем требуется, чтобы соответствовать переменной формы, переданной обратно каждому запросу, который может иметь побочные эффекты (POST обычно). Так как это только предназначено для защиты от перекрестных нападений на сайт, это легко к ремеслу ответ, который легко прошел бы тест, но только если у Вас был полный доступ к cookie. Так как перекрестный взломщик сайта не будет иметь доступ к Вашим пользовательским cookie, Вы защищены.

При помощи симметричного шифрования, каково преимущество в проверке содержания cookie? Таким образом, если я уже отправил HttpOnly cookie, взломщик не может переопределить его (если браузер не имеет главную проблему безопасности), итак, почему я должен затем проверить его снова?

После наличия думания об этом это, кажется, один из тех 'добавленный слой безопасности' случаи - но если Ваш первый оборонительный рубеж упал (HttpOnly) затем, взломщик собирается закончить второй слой так или иначе, поскольку они имеют полный доступ к пользовательскому набору cookie и могли просто исполнить роль их непосредственно, вместо того, чтобы использовать косвенное нападение XSS/CSRF.

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

8
задан Greg Beech 23 April 2010 в 13:43
поделиться

1 ответ

Он был добавлен для обеспечения большей защиты в случае, когда один субдомен пытается атаковать другой - bad.example.com пытается атаковать good.example.com. Добавление имени пользователя затрудняет для bad.example.com возможность негласно связаться с good.example.com и попытаться заставить его сгенерировать токен от вашего имени.

В дальнейшем возможно, что файл cookie будет удален, поскольку он не является строго необходимым для правильного функционирования системы. (Например, если вы используете проверку подлинности с помощью форм, этот файл cookie может служить файлом cookie анти-XSRF вместо того, чтобы требовать от системы создания второго файла cookie.) Этот файл cookie может быть выпущен только в случае анонимные пользователи, например.

6
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: