Собираем
информацию
по крупицам
Новости


Новости

Ретроспективное удаление спама в самодельной гостевой книге
12-09-2017
17:05:50

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

 

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

 

По моим наблюдениям, последний пункт - самое мощное средство борьбы, но и оно работает неэффективно, если на сайт натравливается новая рекламная кампания, которая еще не успела набрать отрицательную статистику на ресурсах типа stopforumspam.com. И тут необходимо городить еще один слой защиты гостевой книги, который я называю "ретроспективное удаление спама".

 

Идея очень проста: проверять добавляемые сообщения нужно не только в момент добавления, но и периодически уже после того, как они появились в гостевой. Да, возможно спам-сообщения будут некоторое время висеть в гостевой, пока stopforumspam.com не накопит статистику, но как только это будет сделано (а делается это за пару часов), спам-сообщения будут автоматически удалены.

 

Такой механизм контроля спама хорошо подходит к редко модерируемым сайтам. Например, на этом сайте я имею возможность раз в пару недель проверять гостевую, и за это время в гостевой скапливается некоторое количество спам-сообщений, пробившихся через фильтры. Ретроспективное удаление в этом случае - единственный выход. И вот недавно я прикрутил примерно такой PHP код:

 

 

// Ретроспективное удаление спама - проверяются уже имеющиеся записи гостевой
private function retrospectSpamCheck()
{
  $days=3; // Чтобы снизить нагрузку на базу,

           // проверяются только записи, добавленные

           // в указанное последнее количество дней

  $edgeTime=time()-$days*3600*24;

  $this->db->select('id, name, email, ip');
  $this->db->where('time >', $edgeTime);
  $query=$this->db->get('guest_book');
  $messages=$query->result_array();

  foreach($messages as $message) {
    if($this->isSpam($message['name'], $message['email'], $message['ip'])) {
      $this->db->where('id', $message['id']);
      $this->db->delete('guest_book');
    }
  }
}

 

// Определение наличия спама через stopforumspam.com

function isSpam($name, $email, $ip)
{
  try
  {
    $data = unserialize(file_get_contents('http://www.stopforumspam.com/api?&email='.urlencode($email).
                                                                           '&username='.urlencode($name).
                                                                           '&ip='.urlencode($ip).
                                                                           '&f=serial'));

    // Если сервис StopForumSpam не отвечает
    if($data===false)
      return false;

    if( isset($data['email']['appears']) and isset($data['email']['confidence']) )
      if($data['email']['appears']!=0 and $data['email']['confidence']>=70)
        return true; // Email в базе спаммеров

    if( isset($data['ip']['appears']) and isset($data['ip']['confidence']) )
      if($data['ip']['appears']!=0 and $data['ip']['confidence']>=70)
        return true; // IP в базе спаммеров

    return false;
  }
  catch (Exception $e)
  {
   return false;
  }
}

 

 

Конечно, здесь есть место для оптимизации, например, вместо нескольких вызовов delete в цикле, можно сначала собрать ID записей гостевой книги, а потом удалить их одним SQL-запросом. И спам через stopforumspam.com можно детектить по другим признакам, а так же учесть, что вместо нескольких запросов API stopforumspam.com поддерживает кумулятивные запросы.

 

Теперь спама в гостевой как не бывало. Считаю, что это очень простой и эффективный метод борьбы. Пользуйтесь на здоровье.

 



Интересное на сайте


Linux: как перестать удивляться, и начать работать » Как распаковать RAR-архив в Linux с именами файлов в кодировке Windows

В мире операционных систем для рабочего стола и офиса царствует Windows. С этим приходится считаться пользователям Linux. Часто возникающая задача - р...


Отладчик GDB » Отладка в gdb: как отловить обращение к переменной или к нужному свойству класса

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


BASH » Cron Emulator

Многие системные администраторы Linux часто сталкиваются с одной и той же проблемой: при попытке запуска команды из-под демона Cron, она ведет себя не...

RSS подписка

Подпишитесь на новости сайта по RSS

Поделиться этой страницей


Статистика


О, смотри-ка какое хорошее место. Дайте два!

Внимание!


На этом сайте разрабатывается программа MyTetra и её родственные проекты. Доступны к просмотру следующие базы знаний:

 

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean

База Аrmagedec

База SorokinRed

База Deadelf79

База Fadk

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База Duwaz

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик