Способ защиты от автоматического спама для стандартной формы комментирования

Способ защиты от автоматического спама для стандартной формы комментирования | n-wp.ru

Способ защиты от автоматического спама для стандартной формы комментирования

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

В обычной форме комментирования всегда встречаются три поля. Пример полей input стандартной формы комментирования:

<input type="text" name="author" id="author" value="" tabindex="1"  />
<input type="text" name="email" id="email" value="" tabindex="2" 
<input type="text" name="url" id="url" value="" tabindex="3" />

Спам-бот ищет поля input с маркерами name=”author”, name=”email” и name=”url”. Чтобы он их не нашел, их всего-то и нужно, что изменить на что-то свое. Пример измененных полей input стандартной формы комментирования:

<input type="text" name="blogauthor" id="author" value="" tabindex="1"  />
<input type="text" name="blogemail" id="email" value="" tabindex="2" 
<input type="text" name="blogurl" id="url" value="" tabindex="3" />

Теперь спам-бот не сможет оставить автоматический спам, так как не найдет поля. Но и комментаторы не смогут оставить комментарии, так как WordPress тоже не поймет, что за данные ему вводят. Поэтому нужно изменить еще один системный файл. Откройте файл wp-comments-post.php, который находится в корневой папке, и найдите в нем такие строчки:

[code

]
$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 на свои:

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

Не забудьте перед изменениями сделать на всякий случай резервную копию этого файла. Это простейший способ защиты от автоматического спама, и чтобы его внедрить, потребуется от силы пара минут. Если же какой-то умный бот “научится” распознавать ваши новые name в формах input, то их можно легко сменить на что-то новое.

Однако у этого способа есть и недостатки. Главный – каждый раз при обновлении WordPress придется вручную менять файл wp-comments-post.php. Но обновление версии WordPress – не такое уж и частое событие, да и смена занимает от силы минуту. Еще один минус – не все плагины, работающие с комментариями, дружелюбно воспримут смену name в формах input, если их работа зависит от этих полей. Впрочем, такие плагины встречаются редко, да и ручная правка трех слов в системном файле занимает малое время, так что эти минусы практически незаметны.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

3 Комментарии

  1. может проще akismet? он всё-таки для простых блогов условно-бесплатен. и от спама отлично защищает + любой спам идёт им в базу, что улучшает качество сервиса.

    • Согласен, может и проще, когда не нужно заботиться об оптимизации работы скриптов. А когда каждый лишний килобайт памяти на счету, и считаешь каждое обращение к базе данных, то поневоле начинаешь задумываться о сокращении лишних плагинов. К тому же, зачем плагин, когда можно обойтись без него, но с тем же результатом работы?

  2. Можно ещё для верности tabindex поменять, но тогда, понятное дело, переключаться между полями с помощью Tab/Shift+Tab станет невозможно.

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

Ваш электронный адрес не будет опубликован.


*