Эффективная защита от спама без помощи плагинов

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

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

В чем преимущества этого способа?

  1. Не вынуждает честных комментаторов производить какие-либо дополнительные действия.
  2. Не нужно устанавливать какие-либо дополнительные плагины.
  3. Как следствие пункта 2, не создается дополнительная нагрузка на сервер.
  4. Подходит для любых версий WordPress.

Конечно, у каждого способа есть свои минусы и этот не исключение:

  1. От ручного спама это вас не спасет. В принципе, от ручного спама защиты и нет. Поэтому советую не отключать Akismet.
  2. При обновлении ядра блога придется снова редактивать wp-comments-post.php

Но всё же считаю, что у этого метода плюсы намного перевешивают минусы. 😉 Поэтому перейдем к реализации этого метода. Итак, начнем.

1. Для начала находим файл из вашей темы comments.php, который находится в папке /wp-content/themes/ВАША_ТЕМА/ и открываем его через текстовый редактор.

2. Для простоты достаточно изменить одно поле: email или author. Но так как мы добиваемся максимальной защиты от спама, то будем изменять все возможные поля. Находим следующие поля:

<input type="text" name="author" value="<?php echo $comment_author; ?>" tabindex="1" />
<input type="text" name="email" value="<?php echo $comment_author_email; ?>" tabindex="2" />
<input type="text" name="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />
<textarea name="comment" tabindex="4"></textarea>

Они у вас не обязательно будут прям в точь-точь такими же, но атрибуты name ОБЯЗАТЕЛЬНО такие! Далее заменяем в них значения параметра name на любые другие, например, на x1x, x2x, x3x, x4x соответственно. Получим следующее:

<input type="text" name="x1x" value="<?php echo $comment_author; ?>" tabindex="1" />
<input type="text" name="x2x" value="<?php echo $comment_author_email; ?>" tabindex="2" />
<input type="text" name="x3x" value="<?php echo $comment_author_url; ?>" tabindex="3" />
<textarea name="x4x" tabindex="4"></textarea>

Затем сохраняем этот файл и закрываем его.

3. Теперь находим файл wp-comments-post.php, который находится в корневой папке блога и также открываем его с помощью текстового редактора.

4. Находим следующие строки:

$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

И заменяем во всех строках после равно значения в квадратных скобках на новые параметры name, то есть на x1x, x2x, x3x, x4x соответственно. То есть у вас получится:

$comment_author       = ( isset($_POST['x1x'])  )     ? trim(strip_tags($_POST['x1x'])) :  null;
$comment_author_email = ( isset($_POST['x2x'])  )     ? trim($_POST['x2x']) : null;
$comment_author_url   = ( isset($_POST['x3x'])  )     ? trim($_POST['x3x']) : null;
$comment_content      = ( isset($_POST['x4x'])  )     ? trim($_POST['x4x']) : null;

Сохраняем файл и закрываем его.

На этом наши действия закачиваются. Защита от спама готова!  Но хочу Вам сказать, что такие новые имена полей были взяты только для примера. Используйте свои уникальные имена полей!

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

Если у вас остались вопросы, задавайте их. Постараюсь на них ответить.

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

А также компания SEO City предлагает продвижение статьями на качественных отборных площадках.

И вообще советую покупать и использовать ноутбуки Москва для работы, так как они удобны и мобильны, вы не будете привязаны к месту.

Вам также будет интересно почитать и следующие записи

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

  • Rulexec:

    Можно ещё добавить
    <input type=»hidden» name=»comm_validation» value=»true» tabindex=»3″ />

    и в wp-comments-post.php в начале файла добавить:

    if ($_POST[‘comm_validation’] != ‘true’)
    {
        exit();
    }

    вот так вот

  • Twin:

    Rulexec, я не вижу смысла в этом. Так как при отправке запроса, даже спам-ботом, поле comm_validation будет иметь значение true.

  • Женек:

    Все гениальное просто :) Теперь можно от капчей избавляться.

  • Rulexec:

    Twin, насколько я знаю, спам-боты просто отправляют POST запрос на нужный скрипт, а не парсят страницу и получают поля.

  • АлаичЪ:

    Я хоть и не сторонник плагинов, но предпочитаю использовать Math Comment. Роботы его не могут победить как ни крути, и людям не сложно посчитать. И мозг развивает =) Шутка!
    А еще при вашем способе надо заново вводить имя, почту и адрес, запомненные браузером не канают =( Но это только первый раз.

  • tty01:

    Смеялсо.

    Сам поймешь, как убог твой совет, когда сделаешь ручками GET / HTTP 1.1

  • Безумный программист:

    Не стоит забывать и про ручной спам. Что сейчас только не сделают за 10 центов. Лучшая защита от спама — это убрать поле «Сайт» в форме.

  • Сергей Фещуков:

    @ Безумный программист, я об этом и писал в посте, там где минусы описывал. Данный способ спасает очень хорошо от автоматического спама.

  • kama:

    Редактировать файл движка — дело неблагодарное, это минус огромный! WordPress обновляется очень часто.

  • Сергей Фещуков:

    @ kama, согласен, но в данном случае другим способом изменения невозможно внести, наверное.

  • Добавить комментарий