Joomla 1.5 + JComments и спам в комментариях

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

Взято с какого-то форума, однако работает. Я его тут распишу плотнее, чтобы у новичков эта доработка при установке не вызывала нервного тика.
Итак, сайт на Joomla 1.5, за комментарии отвечает JComments. Толком не помогло ничего: самописные JS-скрипты, которые отсекают роботов по поведению, усложнение текущей капчи, гугл-капча. И как я писал выше, при удалении кнопки «отправить» поток спама не иссякает.
Для начала, ищем файл jcomments.php и открываем его на редактирование. Путь к нему: /components/com_jcomments/ Далее ищем строку

if (isset($_REQUEST['jtxf'])) {

т.к. здесь начинается обработка запроса формы. Добавляем код, чтобы получилось

if (isset($_REQUEST['jtxf'])) {
	//antispam hack
    $mystring = JRequest::getVar('comment', '', 'post', 'string');
	if (preg_match("/(http|https|casino|clinic)/i", $mystring)) {echo "Your message is send"; exit;} 
	//end
	require_once (JCOMMENTS_BASE.'/jcomments.ajax.php');

Тут происходит вот что: перед отправкой формы, мы получаем значение из её textarea, и проверяем на ключевые слова: (http|https|casino|clinic). Если хоть что-то из них попадается, то данные при отправке идут в никуда. Ключевые слова вы можете через | прописать свои, конкретно в этом примере обрезаются все ссылки http, и пара из того, чем атаковали обслуживаемый мною сайт.
Это всё, не забудьте в конце проверить работу формы.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

пять × два =