@qw1klyy

Как предотвратить имитацию запросов?

Может ли человек, увидев js и post запросы с их url, сымитировать запрос на сервер для каких либо целей. Если да, то как это предотвратить?
К примеру, после успешной оплаты, на сервер отправляется post запрос с определенным заголовками, а человек просто имитирует такой же запрос без оплаты
  • Вопрос задан
  • 476 просмотров
Решения вопроса 1
Elaryks
@Elaryks
Да, сымитировать запрос можно. Поэтому есть правило: "Нельзя доверять данным, которые приходят с клиента". Следовательно, данные с клиента нужно проверять на сервере. Критические данные и операции нужно подписывать или хэшировать, чтобы избежать подмены. Например, для защиты от Replay Attack используют одноразовые токены — при повторном запросе токен уже не сработает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Здесь в вопросе - 2 разных вопроса. Мне кажется так:
1) Как защититься от любого мусора который прилетает с клиента. Скорее всего никак.
Нужно реагировать только на HTTP запросы которые имеют смысл в контексте пользовательской
сессии. Тут - как-бы бизнес логика и FSM для сессии должен все решать. Хакеры с помощью
wget, curl, python могут генерировать фаззингом миллионы самых вариативных запросов
в поиске вашего слабого места в этой части защиты.

2) Как защититься от атаки man-in-the-middle.. Это если легальный пользователь
зашел в свой клиент банк, а некто, кто физически сидит на канале может перехватывать
IP пакеты. Изменять их. Удалять. Задерживать на какое-то время или делать повторы.
Здесь коробочное решение это https (TLS/SSL) протокол по идее помогает.
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
не удачный пример с платежными системами.
Данные об оплате поступают от мерчанта.
В 99% процентов случаев Ваш сайт просто отправляет посетителя на сайт платежной системы так как пройти сертификацию для работы с данными карт (Payment Card Industry Data Security Standard (PCI DSS) ) большой гиморой.
Для переадресации требуется сумма платежа, идентификатор участника платежной системы в чью пользу оплата, обычно к обязательным полям добавляют возможность добавить идентификатор оплаты со стороны продавца.
Названия полей и их количество немного отличаются от платежной системе к системе.

Есть вторая схема. Предварительная регистрация платежа (бакенд дергает апи и получает ид оплаты). Редиректит пользователя на оплату конкретного счета.

Факт успешной оплаты может проверяться по инициативе со стороны бека, так и через механизм обратных вызовов (хуков)

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

Даже в этом случае (пользователь ничего не передает) верить не желательно.
Стоит перепроверить контрольную сумму. Ограничить доступ к хукам по ip.

Типовой способ защиты: расчет контрольной суммы от
секретнаястрока+поле_данных1+поледанных2+....+полеN

Но способ не подходит для JS так как строка будет видна :(
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы