в этом блоге я собираюсь обсудить шаблон токена синхронизатора.

Что такое шаблон токена синхронизатора?

Шаблон токена синхронизатора (STP) – это метод, при котором токен, секретное и уникальное значение для каждого запроса, встраивается веб-приложением во все HTML-формы и проверяется на сервере. боковая сторона. SPT используется для предотвращения атак CSRF со стороны злоумышленников. Подделка межсайтовых запросов (CSRF) — это атака, которая заставляет конечного пользователя выполнять нежелательные действия в веб-приложении, в котором он в настоящее время аутентифицирован. Атаки CSRF нацелены конкретно на запросы на изменение состояния, а не на кражу данных, поскольку злоумышленник не может увидеть ответ на поддельный запрос.

Давайте разберемся с шаблоном токена Synchronizer с помощью блок-схемы

  • Пользователь отправляет GET-запрос на сервер
  • Сервер устанавливает cookie с идентификатором session_id и сохраняет данные сеанса с токеном.
  • Сервер возвращает HTML с формой, содержащей токен в скрытом поле.
  • Пользователь отправляет форму вместе со скрытым полем.
  • Сервер сравнивает токен из отправленной формы (скрытое поле) с токеном, сохраненным в хранилище сеансов. Если они совпадают, это означает, что форма отправлена ​​​​пользователем.

Выполнение

Давайте посмотрим пример проекта,

Это приложение разработано с использованием PHP и JS. (ссылка на Github — https://github.com/viduradeshanrathnayake/Synchronizer-Token-Pattern)

Во-первых, вам необходимо авторизоваться в приложении, введя логин и пароль. Для демонстрации я жестко запрограммировал учетные данные (имя пользователя: vidura, пароль: vidura123).

После успешного входа в систему пользователь может отправить что-либо, включая номер счета, имя и сумму.

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

После проверки учетных данных и если пользователь аутентифицирован, он будет перенаправлен на syncronizer_csrf_token.php, где можно добавить сведения о транзакции в приложение.

Чтобы получить токен CSRF, необходимо выполнить вызов AJAX. Полученный токен CSRF будет храниться в скрытом поле в приложении, из которого находится в syncronizer_csrf_token.php.

Токен CSRF будет проверен функцией validateToken()Когда пользователь добавляет в приложение номер счета, имя и сумму, запрос содержит сгенерированный токен CSRF. Затем сервер проверяет идентификатор сеанса, который находится в заголовке запроса, используя тот, который хранится на стороне сервера, и сравнивает токен CSRF в теле с токеном в заголовке запроса.

Наконец, если в запросе POST был действительный токен CSRF, сервер вернет сообщение об успешном выполнении.

В противном случае он покажет ошибку