Как убедиться в ip посетителя? - PullRequest
2 голосов
/ 16 мая 2009

У меня есть сайт агрегации блогов

истории упорядочены по количеству посещений

Я думаю, что сталкиваюсь со спамом посещений

потому что истории некоторых блогов получают много посещений в одну и ту же секунду с эфферентным IP-адресом

мой сайт не позволяет заходить с одного и того же ip; однако мои посетители как-то меняют свои ips.

Есть ли какое-либо решение для обнаружения этих спам-посещений? Интересно, как Google adSense решает такую ​​проблему?

Спасибо

Ответы [ 4 ]

5 голосов
/ 16 мая 2009

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

Однако вы можете собрать несколько фрагментов информации и объединить их все:

1) Пользовательский агент
2) IP-адрес
3) Заголовок X-Forwarded-For (если имеется)

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

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

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

1 голос
/ 16 мая 2009

Я использую эту функцию иногда. Но, как говорили другие, может быть сложно получить правильный IP-адрес в 100% случаев.

Я не могу вспомнить, откуда я взял эту функцию, но в интернете она довольно распространена.

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
1 голос
/ 16 мая 2009

С помощью PHP вы можете проверить переменную $ _SERVER ["HTTP_X_FORWARDED_FOR"] по IP-адресу, чтобы немного больше убедиться, что клиент - это тот, кем он себя считает. Это поможет идентифицировать людей через некоторые прокси.

0 голосов
/ 16 мая 2009

Вы не можете надежно определить IP.

Возможно, он идет через прокси или может быть подделан.

...