Защита от подделки межсайтовых запросов в веб-приложениях с помощью шаблонов токенов синхронизатора

Подделка межсайтовых запросов (CSRF)

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

Как уменьшить CSRF

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

В любой момент, когда вы завершите экономию денег или бюджетный обмен на сайте, надежно немедленно выйдите из системы. Не просто ограничивайте или закрывайте программу. Если вы это сделаете, это сделает вас беспомощным перед нападением.

Никогда не жалейте свой логин или секретный ключ для хранения денег или сайта денежного учреждения внутри вашей программы. Злонамеренный код в атаках CSRF обычно составляется для использования этих данных, которые находятся внутри вашей программы.

Убедитесь, что у вас установлена ​​последняя версия антивирусного программного обеспечения. Многие вредоносные скрипты могут быть заблокированы и помещены в карантин с помощью этого программного обеспечения.

Избавьтесь от написания сценариев в своей программе. В Firefox есть модуль, который может препятствовать запуску содержимого.

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

Давай сделаем учебник

Итак, давайте посмотрим, как защитить логины с помощью токена синхронизатора. Поэтому нам нужно создать две страницы, одна - клиентская, а другая - серверная. (Clinet-index.php и Server-server.php).

index.php

Cookie установлен с идентификатором сеанса с именем «user_login» и запускает сеанс на стороне сервера и создает хеш-значение с ключом для токена csrf.

server.php

Здесь мы создали токен CSRF и поместили его в выставку сеанса на стороне сервера под названием «CSRF_TOKEN» и, кроме того, поместили в память подставки.

После этого нам нужно получить токен со стороны клиента (index.php), чтобы передать его со стороны сервера. С целью, чтобы я запустил функцию обратного вызова AJAX loadDoc (), чтобы отправить идентификатор сеанса в качестве токена.

loadDoc () Функция JavaScript

В настоящее время токен отправлен на сервер с помощью вызова ajax. Наконец, я актуализировал часть утверждения (через способность «одобрить»), которая утверждает оценку токена csrf и другие информационные точки, представляющие интерес, в любой момент, когда клиент нажимает кнопку отправки.

server.php

Подтвердить работу. Я проверяю имя пользователя, пароль и после этого смотрю на токен «user_csrf» из закрытого поля ввода на токен «CSRF_TOKEN», который мы сделали в начале и проверили sessionId в обоих, которые были отложены.

После успешного входа в систему будет отображаться страница сервера в целом, она будет перенаправлена ​​на страницу клиента (index.php).

Исходный код: - GitHub