В последнее время спам становится просто огромной бедой. Вот и молодой и быстро набравший популярность движок Livestreet стал жертвой спамеров. В последнее время, на какой сайт с Livestreet не загляни – везде тонны спамовых топиков, и везде одно и тоже. Судя по всему спамеры по поисковику находят сайты с этим движком, регистрируются на них (возможно даже вручную), а дальше действует бот.
Я решил с этим бороться. Банить по IP – это не наш метод. А наш метод (старый и проверенный): изменить названия полей формы отправки нового топика. Правда для этого нужно не только править файлы темы, но и внедриться в код самого движка.
Что изменяем?
==========================
Что изменять – вопрос на вкус и цвет. Мне показалось удобнее поменять поле заголовка добавляемого топика.
Переименовать можно как вам будет удобнее, я просто дописал к названию немного случайной абракадабры.
Итак, было поле формы topic_title, стало поле topic_title_asdasdasd.
При этом имеем в виду, что в базе данных поле будет называться по-старому.
Правим тему
============================
Исправить свой шаблон – не такое уж вмешательство. Ваш шаблон, делайте, что хотите.
Открываем файл /templates/skin/ваша_тема/actions/ActionTopic/add.tpl и заменяем в нём все строки topic_title на topic_title_asdasdasd. В моей теме это были 4 вхождения в строках 79 и 80:
79 80 | <p><label for="topic_title_asdasdasd">{$aLang.topic_create_title}:</label><br /> <input type="text" id="topic_title_asdasdasd" name="topic_title_asdasdasd" value="{$_aRequest.topic_title_asdasdasd}" class="w100p" /><br /> |
Правим скрипт обработки формы
=========================================
Открываем /classes/actions/ActionTopic.class.php и находим метод checkTopicFields(), в котором делаем небольшую инъекцию:
616 617 618 619 620 621 622 623 | /** * Проверяем есть ли заголовок топика */ if (!func_check(getRequest('topic_title_asdasdasd'),'text',2,200)) { $this->Message_AddError($this->Lang_Get('topic_create_title_error'),$this->Lang_Get('error')); $bOk=false; } $_REQUEST['topic_title'] =$_REQUEST['topic_title_asdasdasd']; |
Обратите внимание, что после валидации формы мы возвращаем значение подменённого поля в родное. Это нужно чтобы не сломать собственно механизм отправки топика.
Версия движка
==============================
Этот код работает в версии LiveStreet 0.3. Только что скачал версию 0.4, пока не пробовал, хотя код в наших местах выглядит также. Должно работать и там.
Нужно иметь в виду, что в новых версиях код может выглядеть несколько по-иному. Но принцип остаётся тот же.
Так же нужно быть готовым, что это изменение может пропасть при обновлении движка.
Если спам всё ещё проходит
===============================
Хм… Правда??
Чтож, попробуйте изменить вашу абракадабру. Уверен что спамеру скоро надоест подстраивать своего бота индивидуально под каждого пользователя
Посты по теме:
RSS-подписка
спасибо за полезную информацию))
будем бороться!
Хорошо, но если поменять поля формы, все равно будет достточно легко региться в полуавтоматическом режиме
Регистрация как раз не затрудняется. Затрудняется потом автоматическая отправка топиков.