Ограничить количество запросов с IP - PullRequest
0 голосов
/ 24 сентября 2011

Я пишу приложение, в котором есть требования ограничить количество логинов, которые пользователь может иметь с одного IP-адреса (как способ остановить спам).Мы не можем по какой-то причине использовать капчу!

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

Теперь недостатком первого режима является то, что будет слишком много трафика в БД - приложение будет использоваться тоннойлюди.Недостаток хранения этой информации в виде cookie-файлов заключается в том, что пользователи могут очистить их, когда они запускаются снова и снова.

Мне нужны предложения, если есть способ, позволяющий увеличить трафик в БД и ослабить связь с отслеживанием на основе файлов cookie.может быть обработан.

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Вы говорите о "логинах" и веб-приложении, поэтому у вас сохранился какой-то сеанс somwhere .При создании этих сеансов необходимо отслеживать количество активных сеансов на IP и не выделять новые сеансы при достижении этого порога.

Без более конкретной информации о вашей инфраструктуре / среде это лучший ответ, который кто-либо может дать.

Также следует помнить, что этот подход во многих случаях дает сбой из-за NAT (трансляция сетевых адресов).Например, в нашем офисе есть ровно один публичный IP-адрес для X сотен человек.Внутренняя сеть находится в частном IP-пространстве.

0 голосов
/ 24 сентября 2011

Если вы хотите получить IP-адрес и сохранить его где-нибудь, вы можете использовать $_SERVER['REMOTE_ADDR'], чтобы получить IP-адрес пользователя, сделать поле типа «ip» в вашей базе данных и сделать запрос в SQL, чтобы проверить, если IP был использован. Есть и другие способы отслеживания, например Flash Cookie, люди обычно не знают о его наличии, поэтому большинство людей не знают, как его очистить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...