Ярые борцы со спамом одной из причин появления спама в комментариях считают возможность использования разметки HTML. Если присутствует возможность вставить ссылку с ключевыми словами, анкорами, тайтлами, то спамеры незамедлительно этим начинают пользоваться. Более того, существует такое явление, как ручной спам – это когда по всему миру нанимается толпа людей, которые за копейки оставляют как бы человеческие комментарии в популярных блогах, снабжая их полноценными ссылками. Если комментарии открыты для индексирования, то такие ссылки почти находятся поисковиками. Бороться с ручным спамом сложно, особенно на посещаемых сайтах – нужно лично знакомиться с содержанием всех комментариев, сопоставлять их по смыслу с тем материалом, в которому они относятся, проверять указанные в них ссылки, и на основе всех этих данных уже делать вывод о том, является ли такой комментарий обычным или же это хитро замаскированный ручной спам. Поэтому борцы первым делом советуют убрать возможность использования разметки HTML в комментариях, а иногда и вовсе поступить радикально, убрав возможность вообще оставлять ссылки.
По поводу эффективности последнего ничего утверждать не буду, равно как и по поводу самой разметки HTML. Однако скажу, что иногда отсутствие HTML в комментариях может быть полезным не только для борьбы со спамом. Например, у вас есть блог, в котором часто оставляют комментарии, в которых приводятся примеры программного кода. Если присутствует HTML, то в комментариях написать программный код становится практически нереально – он преображается в исполняемый. Вместо table появляется таблица, а код php-функций вообще не отображается. Более того, есть риск, что кто-то хитрый, воспользовавшись какой-либо незакрытой уязвимостью, оставит в комментариях вредоносный код. В общем, если вам нужно запретить HTML в комментариях, то можно воспользоваться способом, который я часто практикую.
Откройте файл functions.php и добавьте в него такой код:
//html в комментариях start function plc_comment_post( $incoming_comment ) { $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']); $incoming_comment['comment_content'] = str_replace( "'", ''', $incoming_comment['comment_content'] ); return( $incoming_comment ); } function plc_comment_display( $comment_to_display ) { $comment_to_display = str_replace( ''', "'", $comment_to_display ); return $comment_to_display; } add_filter( 'preprocess_comment', 'plc_comment_post', '', 1); add_filter( 'comment_text', 'plc_comment_display', '', 1); add_filter( 'comment_text_rss', 'plc_comment_display', '', 1); add_filter( 'comment_excerpt', 'plc_comment_display', '', 1); //html в комментариях end
Этот код запретит использование HTML. Результатом его работы будет то, что если вы напишите программный код, то в комментариях появится именно текст программного кода. А как же оставлять ссылки? – скажете вы – ведь это же необходимо! Самое удобное в том, что возможность оставить ссылки остается – нужно просто указать ссылку ( например: ), и она станет активной. Однако если вы напишите код ссылки
tiaurus.info
то этот код так и останется текстом, преобразование в ссылку не произойдет.
Спасибо. Допишите, что в functions.php используемой темы.
Странно, что такой функции нет по умолчанию ибо html в комментариях – это зло
экранировать надо знаки в кавычках.
alert(‘whoops!’)