Как остановить спамботов в е107? (How Stop the e107 Spambots!)

Спамботы атакуют!!!

Многим людям нравится наличие движения на сайте их это даже радует, регистрации кучи ненужных юзеров, наличие толпы бесполезных вредоносных сообщений итд.
Я попробовал различные CAPTCHA, но Спамботы всегда, их проходят.
Меня же как системного администратора анализирующего логи своего веб-сервера очень удручает, наличие ошибок и ненужных записей в системном логе, поэтому начал думать как быть.

Интересно? Читай далее...

А записи такого характера:

95.168.162.43 - - [24/Jun/2010:07:51:10 +0400] "GET /signup.php HTTP/1.0" 200 136940
95.168.162.43 - - [24/Jun/2010:07:51:11 +0400] "POST /signup.php HTTP/1.0" 200 136670
188.92.74.94 - - [24/Jun/2010:10:57:05 +0400] "GET /signup.php HTTP/1.0" 200 136987
188.92.74.94 - - [24/Jun/2010:10:57:15 +0400] "POST /signup.php HTTP/1.0" 200 136817
64.191.103.101 - - [25/Jun/2010:01:00:22 +0400] "GET /signup.php HTTP/1.0" 200 136959
64.191.103.101 - - [25/Jun/2010:01:00:25 +0400] "POST /signup.php HTTP/1.0" 200 136930
195.239.178.215 - - [25/Jun/2010:01:05:32 +0400] "GET /signup.php HTTP/1.0" 200 136604
195.239.178.215 - - [25/Jun/2010:01:07:48 +0400] "GET /signup.php?resend HTTP/1.0" 200 34139

Просмотреть полностью

Что собственно происходит?

  • Посещает домашнюю страницу (запрос)
  • Идет в signup.php (ответ)
  • Читает и расшифровывает капчу (captcha image)
  • Идет в signup.php.activate (ответ)
  • Далее читает новости и комментарии и начинает безбожно спамить


NB: Господа, спам это не только временное неудобство, это возможность навсегда потерять страницу в выдаче всех поисковиков!!! На заметку SEO-направленных читателей.

Таким образом я думал, и проверял логи своего сервера, связанные с регистрацией пользователей, чтобы видеть точно, что они делают. Большинство из ботов следует одним и тем же путём, описанным сверху. Так же заметил в статистике e107 ошибку 404, с запросом следующего вида:

/index.php?spambot


И к другим страницам, которых не существует у меня в e107. Они были фактически попытками логина для других CMS. Таким образом мои мысли выстроились следующим одразом, если они посещают мой сайт с надеждой найти signup.php - просто не дадим его этим гадам - спамботам.

Сделать это в e107 не составляет особого труда. Я таким образом пофиксил свой сайт 2 недели назад, переименовав signup.php например в xyz_signup.php с того времени имею нулевую регистрацию спамботов и нулевая спам-активность, когда другие сайты просто загибаются от спама.
NB: Внимание, чем более изощренное имя вы дадите файлу, тем менее вероятны попытки регистрации спамботов.

Далее хотел бы вам представить инструкцию по тому, как это делал я.

NB: Помните, изменяя ядро е107 вы рискуете потерять возможность обновления некоторых компонентов. Делайте полный актуальный бэкап как файлов так и базы данных.Всегда!!!

Инструкция по Signup

1) Забэкапьте /signup.php и /class2.php
2) Переименуйте /signup.php в /my_signup.php (У Вас есть воображение?)
3) Откройте /my_signup.php для редактирования и следуйте следующим шагам
Далее инструкция для версии ядра 0.7.22
  • Линия 618, замените:
    header("Location: ".e_BASE."signup.php?resend");

    на
    header("Location: ".e_BASE."my_signup.php?resend");

  • Линия 911, замените
    header('Location: '.e_BASE.'signup.php');

    на
    header('Location: '.e_BASE.'my_signup.php');

  • Line 978, замените
    define("RETURNADDRESS", (substr(SITEURL, -1) == "/" ? SITEURL."signup.php?activate.".$nid.".".$u_key : SITEURL."/signup.php?activate.".$nid.".".$u_key.".".e_LAN));

    на
    define("RETURNADDRESS", (substr(SITEURL, -1) == "/" ? SITEURL."my_signup.php?activate.".$nid.".".$u_key : SITEURL."/my_signup.php?activate.".$nid.".".$u_key.".".e_LAN));

    Замечание: my_signup меняется в 2х местах...
  • Сохраните my_signup.php, закройте.

4) Откройте /class2.php для редактирования
  • Строка 758, замените

define("e_SIGNUP", e_BASE.(file_exists(e_BASE."customsignup.php") ? "customsignup.php" : "signup.php"));

на
define("e_SIGNUP", e_BASE.(file_exists(e_BASE."customsignup.php") ? "customsignup.php" : "my_signup.php"));

5) Сохраняем файлы
6) Удаляем стандартный signup.php с сервера
7) Проверьте наличие ссылок на signup.php в плагинах. Просто скачайте файлы и задайте на директории текстовый поиск по слову "signup.php". (У меня таковых не оказалось)




Вас также может заинтересовать:

e107 v0.7.26 Официальный релиз русской е107
Ban Helper Plugin for e107 v1.3(Бан Хелпер плагин для е107 v1.3)
Ban Helper Plugin for e107 v1.5 (Бан Хелпер плагин для е107 v1.5)
МультиМедиа Флеш Плеер v4.6 плагин для е107 (MMFP for e107)
За последние пару дней много e107-сайтов (в том числе e107.org) были под под атаками хакеров
Корпорация e107 Inc объявляет о ребрендинге компании и выпуске новой версии системы управления контентом e107 v1.0.0.