Бан по IP

За последние годы я создал изрядное количество сайтов. Немалое их количество мне приходилось эксплуатировать. Сохранение резервных копий сайтов, периодическое обновление CMS и плагинов  — работа простая и временами даже интересная. Но есть вид работ, который за эти годы мне сильно надоел. Это — удаление спам-комментариев.Я не знаю, какую цель преследуют чудаки, которые с изрядной настойчивостью день за днем пытаются оставить на сайте комментарий, содержащий ссылку на очередной сайт, продающий экскаваторы, пластиковые окна или … Да мало ли какую!

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

Обычно чудаки прячутся за IP крупного провайдера, и найти конкретного спамера не то что невозможно — лениво. Так же как и чистить спам-комментарии.   Немного подумав, я написал для скрипта comments.php небольшое дополнение:

Selec All Code:
1
2
3
4
5
6
7
8
9
$bans= array("178.137.160.243");
$ip = getenv ("REMOTE_ADDR");
$banned=false;
foreach ($bans as $ban) {
	if ($ban==$ip) {
		$banned=true;
		break;
	}
}

Массив $bans в этом дополнении содержит черный список IP-адресов, с которых приходят спам-комментарии, а переменную $banned можно далее использовать хотя бы так:

Selec All Code:
1
2
3
4
if (!$banned) {
... вывод кнопки комментирования
comment_id_fields();
}

Вот и получается, что спамер, попадая на страницу комментирования, вполне может, кроме просмотра страницы,  написать комментарий, но… не может его отправить. А спам-бот не в состоянии найти кнопку submit, на поиск которой, несомненно, настроен.

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

P.S. IP-адрес спамера актуальный, можете начать с него собственный черный список.

UPD: К сожалению, для размещения спама в комментариях кроме обычных методов существуют и другие, не требующие обращения к форме комментирования. Для предотвращения таких действий я использую плагин  WP-Sentinel, имеющийся в репозитории WordPress. Плагин отслеживает  не только нелегальный спам, но и  попытки вскрытия сайта. От вас требуется только установить  время, на которое требуется забанить пакостника и количество «незаконных» действий для перевода «посетителя» в ранг забаненных.

 

***

Комментариев - 13

  • Спасибо Вам за актуальный пост!!!
    Сейчас как раз с этого IP-адреса мне на сайт приходят спам-комментарии.
    Подскажите, пожалуйста, где лучше расположить Ваше дополнение в HTML-коде, чтобы оно срабатывало?
    Я попробовала вставить его, но, скорей всего, в скрипте comments.php где-то не там расположила, так как спам-комментарии продолжают поступать.

    • Дам еще более актуальный совет, Светлана.
      К сожалению, существуют другие способы размещения спама. Установите себе на сайт плагин WP-Sentinel — он поможет. Заодно поможет и от взлома сайта кучей способов.

      У Вас на сайте, кстати, очень интересное решение по размещению картинок. Плагин или вручную?

      А вот с иконкой сайта у Вас проблема — Вы в курсе?

      • Евгений, благодарю Вас за совет, но он ничем мне не помог. Ваш плагин — не работает. Верней, работает, но не так, как надо. Спам-комментарии как поступали, так и продолжают поступать, зато я при наличии этого плагина не могу нормально работать в админ-панели своего сайта. Он блокирует мою работу. При первой возможности пришлось его удалить.
        Кстати, и к Вам в дальнейшем было весьма проблематично отправить комментарий. Всё тот же плагин блокировал отправку. Какой-то он у Вас неправильный…

        Картинки я размещаю «вручную», если это так можно назвать.

        А что за проблема с «иконкой сайта»? И как её решить?

        • Хм… Этот комментарий я разместил с помощью обычного захода извне, с первого раза и, как видите, проблем нет. Вы, случайно, спам в комментарий не вставляли? :). Вот что написано про Вашу попытку комментирования: html breaking injections including whitespace attacks.
          Плагин, о котором я пишу, не мой. До того, как я его установил — попробовал несколько других. Он настолько хорош, что я ссылаюсь на него вполне безвозмездно.
          О Вашем сайте. В коде сайта есть ссылка на иконку, а самой иконки нет. Соответственно, при загрузке каждой страницы получается ошибка 404. Это отрицательно сказывается как на загрузке сайта, так и на его показателях в поисковой системе. Надо бы либо подправить шаблон Header.php, либо загрузить таки иконку :)

          • Спамом я не занимаюсь. Я просто написала то, что Вы прочитали в предыдущем моём комментарии.
            Да, и ещё один момент — почему-то Интернет Эксплорер не может загрузить Вашу страничку, и она никак не открывается…

            По поводу иконки. В теме оформления сайта был заложен один рисунок, но мне он не понравился и я его удалила. (За место него я хотела поместить другой рисунок, но ничего не получилось). Может быть, имелся в виду именно этот момент…
            Что касается ошибки 404, то ни разу с ней по ходу работы не сталкивалась.

          • Да ладно, про спам была шутка, вполне в тему :). Насчет ИЕ — проверьтесь на всякий случай антивирусом — у меня страница открывается аж в трех версиях. С 404 ошибкой по иконке сталкиваются поисковики. И браузеры посетителей… История про иконку вполне объясняет, но не устраняет ошибку.

  • Здравствуйте. Спасибо за статью. Нашел ее по запросу в поисковике с указанием айпи, который вставлен в Вашем коде. Дело в том, что с этого айпи мне тоже валится спам на блог. Уже запарился — каждый день чищу.
    Подскажите, пожалуйста, как правильно реализовать Ваш алгоритм, потому что я не профи в этих вопроса.
    В комментс.пхп я добавляю указанный Вами первый код.
    Куда вставить второй код?
    Благодарю.
    Алексей.

    • Добрый день. Вторым кодом можно обернуть форму вывода комментариев или отдельно кнопку. Но попробуйте всеж-таки решить комплексно — поставьте плагин WP-Sentinel. Настройки он практически не требует и банит самостоятельно за все пакости. Очень интересно потом по его логам наблюдать попытки спама или вскрытия сайта. Как будто хомячок прыгает на футбольный мяч :)

  • В последнее время, тоже спам достал. Попробую Ваш способ.

    • Попробуйте. 100% гарантии не дает, но гораздо спокойнее.

  • Плагин WP-Sentinel установил себе несколько месяцев назад. Все бы ничего, но по-моему он не любит кнопки социальных закладок. Стоит добавить статью и нажать на кнопки, как это воспринимается как атака на сайт и тут же следует блокировка по IP. Такое поведение вероятно пугает и посетителей сайта. Вот бы подружить этот плагин с с этими кнопками. А так получается вроде бы и полезный и тут же вредит.

    • Ну для этого, как минимум, требуется разобраться, за что именно происходит бан. И потом, важны, видимо, еще и настройки плагина. С настройками по умолчанию он достаточно демократичен и как минимум не банит за однократные действия- «атаки».

Хотите обсудить? Оставьте комментарий