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

Двойная отправка cookie

В случае, если откладывать токен CSRF в сеансе рискованно, выборная защита - это использование двукратной отправки. Двукратная отправка удовольствия характеризуется отправкой произвольного стимула как в угощении, так и в качестве параметра спроса, при этом сервер подтверждает, согласованы ли согласование оценки лакомства и востребования.

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

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

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

Кроме того, мы сделали в Synchronizer проектирование защиты CSRF, мы берем сторону клиента (index.php) и сторону сервера (server.php) для этих учебных упражнений и продолжаем следующие достижения:

index.php

Запустите сеанс и установите файл cookie, в котором хранится идентификатор сеанса клиента (продолжительность cookie установлена ​​на 60 минут).

Затем создайте токен, сохраните его в переменной токена и сохраните в новом файле cookie с именем «csToken», как указано ниже.

После этого мы устанавливаем оценку закрытого поля ввода как токена с использованием «‹? Echo $ token? ›». (для отправки стимула на серверную сторону для утверждения) Эти оценки должны быть отправлены на серверную сторону, когда клиент нажимает кнопку входа в систему.

server.php

Запустите сеанс на стороне сервера, создайте функцию проверки, которая принимает в качестве параметров имя пользователя, пароль, user_token и sessionID.

  • Токен «user_csrf» из закрытого поля ввода с «CSRF_TOKEN», который помещен в выставку сеанса.
  • «User_login» идентификатор сеанса из кластера обработки (который мы сейчас помещаем в пакет услуг) с текущим идентификатором сеанса (с использованием емкости session_id ()) и паролем имени пользователя,

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

Проверка

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

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