У меня есть интернет-магазин, работающий на PHP / Apache. Когда один из наших клиентов пытается отправить заказ, создается несколько заказов. Просматривая журналы HTTP, я вижу, что клиент сделал несколько запросов POST на странице оформления заказа, каждый раз с новым IP-номером, но с одним и тем же агентом пользователя.
Все IP-адреса, кроме одного, принадлежат прокси-серверу ScanSafe. Они включают заголовок HTTP_X_FORWARDED_FOR, который содержит собственный IP пользователя.
Такая же проблема встречается и на других страницах. Я вижу, что запросы GET и POST иногда делаются один раз (со случайным IP — либо с IP-адресом прокси-сервера, либо с IP-адресом клиента), а иногда и несколько раз.
Я мог бы потенциально заблокировать дополнительные запросы. Но как мне узнать, какой HTTP-ответ обработает браузер клиента — первый или последний? Если последний ответ обработан, то как я могу заблокировать первый запрос? Опять же, IP-адрес запроса иногда принадлежит клиенту, иногда прокси.
Я никогда не слышал о ScanSafe, но клиент настаивает, что это хороший продукт с «130 000 пользователей».
Задача ещё не решена.
Других решений пока нет …