Защита от спама на WordPress’е

Защита от спама wordpress

WordPress — один из самых уязвимых cms для спама, так как по умолчанию модерация комментариев не включена, и отсутствует проверочный код, спамерам открыты все пути для совершения их коварных действий. За прошедший год было оставлено более двухсот тысяч спамных комментариев.С этим определённо нужно бороться, и способов для борьбы со спамом довольно большое количество. Несколько из них мы рассмотрим в этой статье, при этом будем пользоваться только подручными средствами, без использования плагинов wordpress и сложных механизмов защиты.

Ручная модерация комментариев

Самый легкий и одновременно самый лучший способ. Администратор проекта будет полностью контролировать все сообщения. Из плюсов данного способа стоит отметить: Контроль над всем контентом, Ручная доработка комментария, Исправление ошибок (если таковые имеются). Но плюсов не существует без минусов, а именно, довольно большая трата времени.

Для реализации необходимо поставить галочку в:
Настройки > Обсуждения > Перед появлением комментария > Комментарий должен быть одобрен вручную
После того, как была поставлена галочка, все комментарии, написанные пользователями, будут автоматически перенесены в кэш, и только после одобрения появятся на сайте. В большинстве случаев эта методика имеет большой успех.

Изменение идентификаторов формы отправки

Способ изменения ID используется довольно редко, но его использование почти всегда предотвращает атаку ботов. Почему это происходит не всегда? — если изменить ID с email на mail, то бот может это распознать, так как указание весьма примитивно, ну а если указать email_comment, то тут уже возникает небольшая преграда. Да, возможно вы скажите, что это не совсем то, что оберегает от ботов, но эффект будет заметен буквально через один час (активный проект).

Итак, перейдём к настройке формы комментирования. Первым делом открываем файл wp-comments-post.php и переходим приблизительно 90-ую строку. Там мы видим код:

$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;

его и нужно будет изменить. При изменении необходимо указывать уникальные (придуманные самому) ID, но comment не нужно трогать, так как если не введён email с именем, сайт выдаст ошибку. Но если вы хотите на 100% изменить стандарт wordpress — дерзайте, но помните — нужно запомнить переменные, они нам ещё понадобятся. В конечном результате получиться, что-то подобное:

... $_POST['author_a'] ... $_POST['author_a']
... $_POST['email_a']  ... $_POST['email_a']
... $_POST['url_a']    ... $_POST['url_a']
... $_POST['comment']  ... $_POST['comment']

После проделанного необходимо отрыть шаблон комментирования вашей темы. У меня это comments.php, но, повторяю, у всех он разный. Если вы не можете его найти, откройте шаблон notepad++ и сделайте поиск, используя строчку:

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

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

<input type="text" placeholder="<?php _e('Name', 'crum'); if ($req) _e(' (required)', 'crum'); ?>" class="text" name="author_a" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?>>

<input type="email" placeholder="<?php _e('Email (will not be published)', 'crum'); if ($req) _e(' (required)', 'crum'); ?>" class="text" name="email_a" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?>>

<input type="url" placeholder="<?php _e('Website', 'crum'); ?>" class="text" name="url_a" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3">

Checkbox как борьба со спамом

Данный способ изложен исключительно в текстовом виде. Если будет необходимо такая функция лично вам,  пишите в комментариях, я попытаюсь ответить в ближайшее время. Теперь приступим к «мысленной» реализации. Для начала нужно открыть форму комментариев шаблона, потом просто добавить условие, при котором будет проверяться, поставлена ли галочка на Checkbox. При этом назвать бокс уникальным идентификатором, такой, чтобы бот анализатор не понял, что это такое и просто-напросто ушел с проекта. Возможно, это совсем извращения, но это работает в 10 из 10 случаев. Попробовать всегда стоит. В нашей следующей статье Вы узнаете, как перенести сайт с DLE на WordPress.

0
Поделиться
Mentor

Уже более четырех лет интернет - моё хобби. Больше всего мне удалось освоить веб-дизайн. В настоящее время активно занят продвижением сайтов.

Оставить комментарий

Войти с помощью: 
Яндекс.Метрика