Ранее я обсуждал Шаблон токенов синхронизатора и подделку межсайтовых запросов как одно из решений для атаки подделки межсайтовых запросов на веб-приложения.

В этом сообщении блога будет обсуждаться шаблон Double Submit Cookie для предотвращения атаки CSRF.

Двойная отправка шаблона cookie

Двойная отправка файлов cookie определяется как отправка случайного значения как в файле cookie, так и в качестве параметра запроса, при этом сервер проверяет, равны ли значение cookie и значение запроса.

Когда пользователь аутентифицируется на сайте, сайт должен сгенерировать (криптографически стойкое) псевдослучайное значение и установить его как файл cookie на машине пользователя отдельно от идентификатора сеанса. Серверу ни в коем случае не нужно сохранять это значение, поэтому этот шаблон также называется Stateless CSRF Defense.

Выполнение

Во-первых, вы должны войти в приложение, указав жестко заданные имя пользователя и пароль. Полномочия как,

имя пользователя: привет,

пароль: 1234

Эта форма входа в систему с использованием метода POST отправляет учетные данные пользователя. Если клиент успешно аутентифицирован, серверная сторона создает уникальный идентификатор сеанса и токен CSRF, но сервер сохраняет только идентификатор сеанса. Важно отметить, что в этой ситуации сервер не хранит токен CSRF.

После установки токена CSRF для файла cookie сохраненный токен CSRF назначит значение скрытого поля с помощью приведенного ниже JavaScript (вызов AJAX) при загрузке вкладки транзакции.

Проиллюстрируйте значение после того, как скрытое поле было установлено токеном.

Заявление будет выпущено клиентом, когда форма будет отправлена ​​с внутренней стороны. Затем сервер проверяет детали формы и проверяет токен файла cookie CSRF с токеном файла cookie клиента CSRF.

Наконец, сообщение об успехе будет показано, если файл cookie подтвержден.

иначе это показывает недопустимое сообщение.

Приемы шаблона Double Submit Cookie, описанные в этой истории, заслуживают внимания в любом приложении, содержащем полезные данные.

Я разработал образец проекта Double submit cookie. Вы можете проверить исходный код здесь.