Защита от спама в phpBB3 без капчи

Защита от спама в phpBB3 без капчи Простой антиспам-скрипт на основе поведенческого анализа спам-ботов.

Думаю, многие владельцы форумов на phpBB 3 уже знают, что стандартная капча, идущая в комплекте с форумом, особо не спасает.

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

Защита на основе анализа действий пользователя


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

Сразу уточню, что форум русскоязычный (русский включен по умолчанию), но есть и английский.

И так типичный запрос на регистрацию от бота выглядит так (выводятся метод, url, referrer, и потом инфа из POST-запроса, email я убрал):



GET	/forum/index.php	/forum/index.php

GET	/forum/ucp.php?mode=register	/forum/ucp.php?mode=register

POST	/forum/ucp.php?mode=register	/forum/ucp.php?mode=register	
  'agreed' => 'Я согласен с этими условиями',
  'change_lang' => '',
  'creation_time' => '1320421149',
  'form_token' => '16d4c035a7de1680c4e19fe0addd242d7edf1822',

POST	/forum/ucp.php?mode=register	/forum/ucp.php?mode=register
  'username' => 'Shemtrearve',
  'email' => 'deassepleadia@....com',
  'email_confirm' => 'deassepleadia@....com',
  'new_password' => 'q49uh3oYcN',
  'password_confirm' => 'q49uh3oYcN',
  'lang' => 'en',
  'tz' => '-12',
  'agreed' => 'true',
  'change_lang' => '0',
  'submit' => 'Отправить',
  'creation_time' => '1320421154',
  'form_token' => '97471b3af621c1a60f825e50d2b61b3346b48025',

GET	/forum/ucp.php?mode=login	/forum/ucp.php?mode=login


Также я убрал sid из URL, боты их зачастую добавляют, хотя они отключены у меня в форуме. Все запросы сделаны с интервалом 4-5 секунд.

Теперь ищем странности в запросе:


  1. Естественно сразу видно, что бот заходит на страницу с этой же страницы (referrer совпадает со страницей).
  2. Во втором POST запросе, обращаем внимание на то, что бот выбрал английский язык, при том в предыдущем запросе он язык не менял, и типа спокойно прочитал правила форума на русском, а потом выбрал английский.
  3. Далее мы выдим, что выбрана временная зона -12, хотя эта зона чисто условна и там никто не живет. А всё дело в том, что phpBB эту дату высталяет JavaScript-ом, а у ботов она остается по умолчанию.
  4. Далее change_lang = 0 при том, что в phpBB не может быть такого значения, там должен быть код языка.
  5. Ну и напоследок submit на русском языке, при выбранном английском языке. Есть еще тупые боты которые не понимают кириллицы, и в это поле вставляются вопросительные знаки.

В общем, вывод достаточно простой, но основе пунктов 2-5, делаем небольшой скрипт, который будет препятствовать регистрации ботов.

Код выглядит примерно так


if (isset($_POST['password_confirm']) && isset($_POST['tz'])){ // Пришел запрос на регистрацию 
    if(
        $_POST['tz'] == -12 || // Нереальная временная зона
        ($_POST['lang'] == 'en' && $_POST['change_lang'] != 'en') || // Изменен основной язык, но change_lang при это не изменен
        ($_POST['lang'] == 'en' && $_POST['submit'] == 'Отправить') // Язык вроде английский, а кнопка почему-то русская
    ){
        header("HTTP/1.1 404 Not Found");
        exit;
    }
}


Проще всего добавить этот код в конце config.php, чтобы не долго ковыряться, не снести его при обновлении форума, да и сразу посылать ботов лесом. Можно упростить условие по желанию, просто для наглядности расписал. Благодаря такому простому коду я отсеял практически всех спаммеров, при том, что даже выключил капчу.

Понятное дело, что со временем боты научатся это обходить, но тогда и мы, что-нибудь новое придумаем.

Источник: habrahabr.ru

dlrm
Разработчик на джумле, автор многих идей проектов.

Вы можете почитать все статьи от dlrm'а.



Другие статьи по этой теме:
  • 0 Защита от спама в phpBB3 без капчи (09.10.2013) ← вы тут

Комментарии (2)     Подпишитесь на RSS комментариев к этой статье.

2 комментариев

#1010
Денис говорит:
October 10, 2013 at 10:18 pm

Если нет желания вручную делать правки в коде и потом поддерживать изменения, то рекомендую воспользоваться готовым модулем защиты phpBB3 от ботов без Капчи, модуль называется CleanTalk.

http://cleantalk.ru/phpbb-anti-spam-mod

#1035
Dic говорит:
November 26, 2013 at 08:11 pm
Не работают благодарности, при установке этого кода на форум.