в этом блоге я собираюсь обсудить шаблон токена синхронизатора.
Что такое шаблон токена синхронизатора?
Шаблон токена синхронизатора (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, сервер вернет сообщение об успешном выполнении.
В противном случае он покажет ошибку