Я объяснил, что такое CSRF-атака на веб-приложения, и рассказал о методе Synchronizer Token Patten, который предотвращает атаки CSRF. Если вам нужна информация по этим темам, перейдите в эту запись в блоге.

Сегодня я собираюсь объяснить шаблон отправки двойного файла cookie в этом сообщении в блоге.

Шаблон отправки двойных файлов cookie — это известное решение для атак CSRF. Он определяется как отправка случайного значения в файле cookie и параметре запроса, при этом серверная сторона проверяет, совпадают ли значение запроса в форме и значение файла cookie. В этом методе токен CSRF не сохраняется на сервере. Тогда это лицо без гражданства.

Преимущества::--

Его реализация проще, чем другие методы.

Управление памятью по сравнению с Synchronizer Token Pattern выше.

Как это работает?

Когда клиент входит в веб-приложение, сервер проверяет имя пользователя и пароль и дает разрешение на вход на веб-сайт. В это время сервер генерирует идентификатор сеанса и токен CSRF и сохраняет только идентификатор сеанса. Теперь сервер устанавливает идентификатор сеанса и значение токена в виде файлов cookie. Затем сервер отправляет эти файлы cookie с ответом. После этого, если клиент запрашивает другую форму, клиентский браузер считывает файл cookie токена и устанавливает значение токена CSRF в скрытое поле в форме. Когда клиент отправляет форму, файл cookie токена CSRF и файл cookie идентификатора сеанса отправляются в заголовке запроса. После отправки формы сервер проверит значение в скрытом поле со значением файла cookie токена CSRF. Это действительный запрос, если они совпадают. Если они не совпадают, сервер отклонит запрос.

Я разработал простое веб-приложение с использованием PHP и Java Script. Вы можете получить исходный код в git hub. ("кликните сюда")

Сначала вам нужно войти в тестовое веб-приложение, указав имя пользователя и пароль. Для этой демонстрации имя пользователя — «admin», а пароль — «admin».

Пользователь отправляет эту форму входа, используя учетные данные пользователя в методе POST. После этого подтвердите учетные данные и, если пользователь прошел проверку подлинности успешно, сервер создаст идентификатор сеанса и токен CSRF. Теперь сервер установил их как файлы cookie. Там мы должны установить флаг httponly в файлах cookie «false», потому что JS может получить доступ к файлу cookie токена csrf, чтобы добавить его в скрытое поле в почтовом запросе. После этого пользователь будет перенаправлен на обратную связь со страницы.

Теперь мы хотим встроить токен CSRF в скрытое поле в форме обратной связи. Для этого мы можем использовать функцию Java Script, чтобы получить файл cookie CSRF и разделить его, чтобы получить значение токена CSRF.

Теперь пользователь вводит отзыв и отправляет форму. После его отправки сервер проверяет идентификатор сеанса, который находится в заголовке запроса, как файл cookie, используя идентификатор сеанса, который хранится в базе данных сервера. А также сервер проверяет токен CSRF, который находится в скрытом поле, с файлом cookie токена в заголовке запроса.

Если эти два маркера совпадают, веб-приложение сохранит отзыв на сервере и отобразит сообщение об успешном завершении на домашней странице.

В противном случае, если он не соответствует, сервер перенаправит пользователя на страницу входа и отобразит сообщение об ошибке.

Спасибо!