Идеи для реализации безопасности XSRF в ASP.NET MVC с использованием файлов cookie с двойной отправкой - PullRequest
1 голос
/ 14 ноября 2008

Я решил попытаться использовать технику с двойной отправкой файлов cookie , чтобы попытаться предотвратить атаки XSRF на сайт, над которым я работаю. Таким образом, как я это записал здесь, все действия, которые на самом деле делают что-то, кроме получения информации, будут публикациями. Получает будет ... э-э ... Получает. Во-вторых, каждая форма, в которой публикуются сообщения, будет содержать комбинацию «ключ / cookie».

У меня вопрос: какой самый простой способ реализовать это в веб-приложении ASP.NET MVC?

Не ответить на мой вопрос, но вот мои первые мысли:

Прямо сейчас все мои контроллеры наследуются от базового контроллера, поэтому моей первой мыслью было переопределить метод OnActionExecuted, чтобы проверить наличие обязательного поля формы, и оттуда, если он его найдет, проверить его по cookie и либо разрешить продолжить публикацию или перейти на страницу с ошибкой.

Для части формы я думал о создании собственных методов расширения html, таких как ... Html.BeginSecureForm (), который перегружает все те же методы, что и BeginForm (в случае необходимости), но автоматически генерирует псевдослучайный ключ и cookie и автоматически помещает файл cookie и поле формы в форму (ЕСЛИ ЕГО ПОСТ!).

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

Ответы [ 3 ]

2 голосов
/ 14 ноября 2008

Используйте встроенную поддержку для этого в ASP.NET MVC .

0 голосов
/ 18 декабря 2013

Одним из методов, набирающих популярность, является Шаблон зашифрованного токена, реализованный платформой под названием ARMOR. Предполагается, что вам не нужны ни Session, ни cookie-файлы для обеспечения защиты CSRF. Шаблон зашифрованного токена использует зашифрованный Rijndael токен, целостность которого поддерживается алгоритмом хеширования SHA256.

ARMOR Framework прост в реализации как в приложениях MVC, так и в веб-API. Полное прохождение здесь .

0 голосов
/ 04 мая 2009

Встроенная защита ASP.NET MVC XSRF имеет один недостаток: она отправляет еще один файл cookie клиенту.

В то же время, Html.AntiForgeryToken() будет давать посетителю cookie с именем __RequestVerificationToken , с тем же значением, что и случайное скрытое значение, показанное выше.

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

Но есть и анонимные пользователи, которые не имеют учетной записи и, следовательно, не отслеживают на стороне сервера. В таком случае мне интересно, не могли бы вы каким-то образом получить существующий файл cookie ASP.NET_SessionId (когда сеансы включены), который уже отправлен каждому пользователю ... вместо создания Другое печенье.

возможно? Или я не обдумываю это? ..

...