[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита от спама в IPB
HardWoman
В очередной раз проводя анализ работы форума (и учитывая неоднократные жалобы пользователей) постояно ищу фозможность улучшить работу. Предлагаю на рассмотрение пользователей-профессионалов интересную статью:

Самый действенный способ избавления от спама рекламных ботов в форуме IPB.

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

Обратите внимание — на странице уже есть форма ввода графического кода. Однако, она ничуть не помогает. Современные программы для регистрации научились распознавать графические коды.

Программа распознаёт код, «заполняет» все поля формы регистрации и отправляет форму на сервер.

Но есть одно но, благодаря которому можно избежать автоматических регистраций, а, как следствие, спама на Вашем форуме.

На страницах есть JavaScript, который исполняется броузером, когда форум читает человек, но никак не исполняется когда бот автоматически пытается зарегистрироваться на форуме. Именно при помощи JavaScript’а можно решить проблему. Сделать это довольно просто.
Форма отправляет значения act=Reg и CODE=02 методом POST в index.php. Это — необходимые значения для регистрации. Именно их боты получают из формы и отправляют на сервер. Но ведь никто не помешает в движке форума изменить значения и сделать так, чтобы скажем отправлялось CODE=28. Давайте так и сделаем. Почти так, но чуть сложнее. Сделаем, чтобы в форме вначале стояло значение CODE=02, а при отправке JavaScript ом менялось на 28.

Решение проблемы и последующая защита от плохих регистраций и спама (применимо к IPB >=2.10)

1. В админ-панели, «Внешний вид» -> Скин -> HTML-фрагменты -> Регистрация -> ShowForm
найдите:

PHP
  1. <input type="hidden" name="CODE" …./>


замените на

PHP
  1. <input type="hidden" name="CODE" id="r_code" value="02" />


2. Откройте файл форума /jscripts/ipb_register.js, в функции validate_reg_form найдите:

PHP
  1. return reg_oktogo ? true : false;


замените на:

PHP
  1. if(reg_oktogo) {document.getElementById( 'r_code' ).value='28'; return true;}
  2. else return false;


3. Откройте файл /sources/action_public/register.php, найдите код:

PHP
  1. case '02':
  2. $this->create_account();
  3. break;


После него вставляйте:

PHP
  1. case '28':
  2. $this->create_account();
  3. break;


4. Найдите:

PHP
  1. //--------------
  2. // Check for errors in the input.
  3. //--------------


После этого кода вставляйте:

PHP
  1. if(intval($this->ipsclass->input['CODE'])!=28) $form_errors['general'][] = "Включите javaScript, иначе Вы не сможете провести регистрацию.";


Что скажите, действенна ли данная защита?! dry.gif








Спустя 14 минут, 3 секунды (2.03.2007 - 20:36) vasa_c написал(а):
А юзеры без JS?
Сегодня прикрутили какой-то мод с вопросами, может поможет.

Спустя 3 часа, 30 минут, 51 секунда (3.03.2007 - 00:07) welder написал(а):
как вариант можно прикрутить математический опросник
PHP
  1.  
  2. <?php
  3. ############ <файл выода защитного кода> ############
  4. //заносим слова вместо символов
  5. $action_text =array("умножить","плюс","минус");
  6. //генерим первое число действие и второе число
  7. $count1 = mt_rand(5,9); $action= mt_rand(0,2);$count2 = mt_rand(1,5);
  8. // выводим HTML код и скрытое поле
  9. echo "<B>$count1</B> $action_text[$action] <B>$count2</B> =
  10. <input name='cheker' type='text' maxlength=3 size=5> (посчитайте и введите значение)
  11. <input name='chek' type='hidden' value='$count1|$action|$count2|'>";
  12. ############ </файл выода защитного кода> ############
  13.  
  14.  
  15. ############ <файл проверки защитного кода и ведённых данных> ############
  16. // тут уже всё переделываем под код фоума
  17. //Вытягиваем cheker (введённый ответ) и chek (скрытое поле)
  18. $cheker=$_POST['cheker'];$chek=$_POST['chek'];
  19. //Фытягиваем из chek $count1,$action,$count2
  20. list($count1,$action,$count2) = explode("|", $chek);
  21. // пошли проверки
  22. // проверяем $action и делаем приписанное ему действие
  23. if ($action == 0) $number = $count1*$count2;
  24. if($action == 1) $number = $count1+$count2;
  25. if($action == 2) $number = $count1-$count2;
  26. // ну тут уже сравниваем cheker (введённый ответ) и $number (настоящий ответ)
  27. if ($cheker != $number) { echo "НЕ ВЕРНО"; exit;}
  28. ############ </файл проверки защитного кода и ведённых данных> ############
  29. ?>
  30.  

Спустя 2 часа, 25 минут, 28 секунд (3.03.2007 - 02:32) Patrick написал(а):
Капчу надо ставить нормальную свою! или JS на худой конец...

Пользователи без JS это параноики какие то....

Спустя 16 минут, 32 секунды (3.03.2007 - 02:49) welder написал(а):
Цитата
Капчу надо ставить нормальную свою!

Самый оптимальный вариат по идее о других и думать не стоит..

Спустя 6 часов, 36 минут, 10 секунд (3.03.2007 - 09:25) HardWoman написал(а):
Цитата
Капчу надо ставить нормальную свою!


давайте же скорее где взять эту капчу?

Спустя 46 минут, 29 секунд (3.03.2007 - 10:12) vasa_c написал(а):
Цитата
как вариант можно прикрутить математический опросник

Да боты его пройдут легче, чем большинство кулхакеров.
Цитата
Пользователи без JS это параноики какие то....

Ну, это, например, не пользователи PC, а всяких продвинутых гаджетов.

Спустя 3 часа, 14 минут, 28 секунд (3.03.2007 - 13:26) Patrick написал(а):

Спустя 3 минуты, 10 секунд (3.03.2007 - 13:29) vasa_c написал(а):
После того, как вчера модуль с вопросами приделали, ботов пока не наблюдалось. Предлагаю подождать и посмотреть, что из этого выйдет.

Спустя 24 минуты, 30 секунд (3.03.2007 - 13:54) Patrick написал(а):
А вопросы зачётные!

Спустя 7 минут, 11 секунд (3.03.2007 - 14:01) vasa_c написал(а):
Да. Не только от ботов защищают, но и от большинства ламеров. )

Спустя 43 минуты, 6 секунд (3.03.2007 - 14:44) HardWoman написал(а):
ОК :)

Спустя 4 месяца, 13 дней, 6 часов, 43 минуты, 29 секунд (16.07.2007 - 20:28) Azimut написал(а):
Цитата(vasa_c @ 3.3.2007, 14:29) [snapback]14946[/snapback]
После того, как вчера модуль с вопросами приделали, ботов пока не наблюдалось. Предлагаю подождать и посмотреть, что из этого выйдет.

Здавствуйте !!
а не могли бы вы по подробней рассказать про этот модуль если не затруднит или дать ссылку где можно найти инфу.
(форум IPB 2.1.7)
Заранее благодарен.

Спустя 12 часов, 18 минут, 31 секунда (17.07.2007 - 08:46) md5 написал(а):

Спустя 2 месяца, 23 дня, 6 часов, 57 минут, 29 секунд (10.10.2007 - 15:44) vleoff написал(а):
и как его установить?


_____________
Сложные иерархии рулят!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.