Шаблон двойной отправки файлов cookie.
В шаблоне cookie с двойной отправкой токен CSRF может быть установлен сайтом в файл cookie, а CSRF может быть вставлен в скрытое поле в каждой HTML-форме, отправляемой клиенту. После отправки формы сайт может сравнить токен формы вместе с файлом cookie, чтобы проверить, совпадают ли эти два значения. Это не позволяет злоумышленнику читать или устанавливать файлы cookie в целевом домене, поэтому он не может поместить действительный токен в созданную им форму.
Пример проекта.
Этот проект представляет собой приложение NodeJS, и в нем используются шаблоны colorlib.
Код для приложения приведен ниже.
Вы должны создать логин пользователя, который позволяет пользователю вводить учетные данные и входить на сайт.
Процесс.
Здесь, когда пользователь вошел на сайт, он проверит действительность пользователя, сравнив учетные данные в файле loginCtrl.js. если пользователь является действительным идентификатором сеанса пользователя, генерируются с использованием метода genSessionId() и устанавливаются как файл cookie в браузере, а также токен CSRF также генерируется с использованием метода genCSRFToken(sessionId,saltValue) и добавляется файл cookie. Когда страница сведений загружается, она вызывает функцию accessToken(), которая извлекает файл cookie csrf с помощью функции getCsrfCookie(cookiename). Если она возвращает токен, он добавляется в скрытое поле, иначе он не добавляется. После отправки подробной формы в действие будет отправлен файл cookie токена CSRF, а также в теле формы будет отправлено значение токена CSRF. Маршрут /validateCsrfToken получит токен CSRF, полученный в файле cookie, а также в теле сообщения, и сравнивает два полученных значения, а также сравниваются идентификаторы двух сеансов. Затем он возвращает сообщение в соответствии с действительностью. Если значение совпадает, параметр отправляется через URL как «error=false». Затем получите доступ к возвращаемому значению из URL-адреса с помощью метода getParameterByName(name, url) и после того, как он вернет значение. Затем он проверяет, является ли результат успешным или неудачным, после чего сообщение, относящееся к статусу, будет отображаться, делая теги ‹div› видимыми.
Спасибо!!
До скорой встречи :)