Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 28.07.2008, 12:44   #1
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 13,845
Репутация: 3619
По умолчанию Защита от спама в форумах phpBB2

(с) Arigato, 2006-2007

В этой статье я хочу рассказать о двух методах защиты форума на базе движка phpBB2 от спамеров и их ботов.

Первое, что нужно сделать, что бы прекратить автоматическую регистрацию ботов и массовый спам в темах: закрыть возможность писать сообщение гостям, поставить картинку на форму регистрации и установить активацию учетной записи по E-Mail.

Изменение картинки при регистрации на форумах phpBB2 (против автоматической регистрации ботов)

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

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

Для этого нужно проделать следующее.

В папке includes форума изменить файл usercp_confirm.php:
Удалить всю часть файла после строчки
Код:
// output six seperate original pngs ... first way is preferable!
или же строчки (в разных версия форума могут встречаться несколько отличные друг от друга комментарии)
Код:
// Thanks to DavidMJ for emulating zlib within the code :)
и до конца файла. Вместо удаленной части вставить следующее:
Код:
// Изменение картинки в форме регистрации
// Автор мода: Arigato, 2006

list($usec, $sec) = explode(' ', microtime());
mt_srand($sec * $usec);

$font = getcwd() . "/includes/font.ttf";

$img = ImageCreate (320, 50);

$color = array();
$color[] = ImageColorAllocate ($img, 0, 0, 0);
$color[] = ImageColorAllocate ($img, 255, 0, 0);
$color[] = ImageColorAllocate ($img, 0, 255, 0);
$color[] = ImageColorAllocate ($img, 255, 255, 0);
$color[] = ImageColorAllocate ($img, 255, 0, 255);
$color[] = ImageColorAllocate ($img, 0, 255, 255);
$color[] = ImageColorAllocate ($img, 255, 255, 255);

$sx = ImageSX ($img) - 1;
$sy = ImageSY ($img) - 1;
$sc = count ($color) - 1;

// Фоновый шум:
for ($i = 0; $i < 1024; $i++)
{
   $x = mt_rand (0, $sx);
   $y = mt_rand (0, $sy);
   $c = $color[mt_rand(1,$sc)];
   ImageSetPixel ($img, $x, $y, $c);
}

// Вывод кода:
$xpos = mt_rand (8, 32);
$height = $sy - mt_rand (0, $sy / 4);
for ($i = 0; $i < strlen($code); $i++)
{
   $angle = mt_rand (0, 30) - 15;
   $size = mt_rand (0, 8) + 32;
   $ypos = $sy - mt_rand (8, $sy - $height - 8);
   $c = $color[mt_rand(1,$sc)];
   $rect = ImageTTFtext ($img, $size, $angle, $xpos, $ypos, $c, $font, $code[$i]);
   $width = $rect[2] - $rect[0];
   $height = $rect[1] - $rect[7];
   $xpos += $width + mt_rand (4, 48);
}

// Передний шум:
for ($i = 0; $i < 256; $i++)
{
   $x = mt_rand (0, $sx);
   $y = mt_rand (0, $sy);
   $c = $color[mt_rand(0,$sc)];
   ImageSetPixel ($img, $x, $y, $c);
}
for ($i = 0; $i < mt_rand (2, 8); $i++)
{
   $x1 = mt_rand (0, $sx);
   $y1 = mt_rand (0, $sy);
   $x2 = mt_rand (0, $sx);
   $y2 = mt_rand (0, $sy);
   $c = $color[mt_rand(0,$sc)];
   ImageLine ($img, $x1, $y1, $x2, $y2, $c);
}

header ("Content-type: image/png");
header ("Cache-control: no-cache, no-store");
ImagePng ($img);
ImageDestroy ($img);
?>
Кроме этого нужно поместить в папку includes файл со шрифтом font.ttf, архив с которым можно скачать ниже.
При желании можно использовать любой другой TrueType шрифт, содержащий латинские буквы и цифры.

Как показал опыт применения данного метода на многих форумах, автоматическая регистрация ботов после такой модификации прекращается полностью.
Миниатюры
Нажмите на изображение для увеличения
Название: old_pic.png
Просмотров: 121
Размер:	14.5 Кб
ID:	5027   Нажмите на изображение для увеличения
Название: new_pic.png
Просмотров: 138
Размер:	3.0 Кб
ID:	5028  
Вложения
Тип файла: rar font.rar (20.2 Кб, 105 просмотров)
__________________
E-Mail: arigato.freelance@gmail.com

Последний раз редактировалось Arigato; 28.07.2008 в 12:49.
Arigato вне форума   Ответить с цитированием
Старый 28.07.2008, 12:45   #2
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 13,845
Репутация: 3619
По умолчанию

Разрешить отправлять личные сообщения только пользователям с 20 и более сообщениями на форуме phpBB2 (защита от спама в личку)

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

Открыть файл privmsg.php, найти строчку
Код:
if ( $mode == 'newpm' )
Добавить выше следующий код:
Код:
// НАЧАЛО: отправка личных сообщений только для пользователей с 20 сообщениями на форуме
// Автор мода: Arigato, 2007
if ( $mode == 'post' || $mode == 'reply' || $mode == 'quote' )
{
   $mod_mes_count = 20;
   if ( $userdata['user_posts'] < $mod_mes_count )
   {
      message_die(GENERAL_MESSAGE, "<b>$userdata[username]</b>, у Вас на форуме <b>$userdata[user_posts]</b> сообщений<br />
      Отправлять личные сообщения Вы сможете, когда наберете <b>$mod_mes_count</b> или более сообщений на форуме");
   }
}
// КОНЕЦ: отправка личных сообщений только для пользователей с 20 сообщениями на форуме
Переменная $mod_mes_count определяет количество сообщений на форуме, после которого пользователю разрешается отправлять ЛС. Читать ЛС может любой пользователь.
Предупреждение о запрете отправки ЛС выводится по русски, многоязычность не поддерживается.
__________________
E-Mail: arigato.freelance@gmail.com
Arigato вне форума   Ответить с цитированием
Старый 23.03.2009, 20:11   #3
Нита
Новичок
 
Регистрация: 23.03.2009
Сообщений: 1
Репутация: 10
По умолчанию

ПАСИБА ПАСИБА ПАСИБА ПАСИБА!!!!!!!
Все заработало!
Скажите пожалуйста, а вы не знаете, как сделать так, чтобы открыть форум гостям, но требовать от них картинку подтверждение при отправке сообщения?
Нита вне форума   Ответить с цитированием
Старый 23.03.2009, 21:00   #4
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 13,845
Репутация: 3619
По умолчанию

Цитата:
Скажите пожалуйста, а вы не знаете, как сделать так, чтобы открыть форум гостям, но требовать от них картинку подтверждение при отправке сообщения?
По-моему, есть готовый подобный мод.
__________________
E-Mail: arigato.freelance@gmail.com
Arigato вне форума   Ответить с цитированием
Старый 17.02.2010, 03:43   #5
Oder
Новичок
 
Регистрация: 17.02.2010
Сообщений: 1
Репутация: 10
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Разрешить отправлять личные сообщения только пользователям с 20 и более сообщениями на форуме phpBB2 (защита от спама в личку)

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

Открыть файл privmsg.php, найти строчку
Код:
if ( $mode == 'newpm' )
Добавить выше следующий код:
Код:
// НАЧАЛО: отправка личных сообщений только для пользователей с 20 сообщениями на форуме
// Автор мода: Arigato, 2007
if ( $mode == 'post' || $mode == 'reply' || $mode == 'quote' )
{
   $mod_mes_count = 20;
   if ( $userdata['user_posts'] < $mod_mes_count )
   {
      message_die(GENERAL_MESSAGE, "<b>$userdata[username]</b>, у Вас на форуме <b>$userdata[user_posts]</b> сообщений<br />
      Отправлять личные сообщения Вы сможете, когда наберете <b>$mod_mes_count</b> или более сообщений на форуме");
   }
}
// КОНЕЦ: отправка личных сообщений только для пользователей с 20 сообщениями на форуме
Переменная $mod_mes_count определяет количество сообщений на форуме, после которого пользователю разрешается отправлять ЛС. Читать ЛС может любой пользователь.
Предупреждение о запрете отправки ЛС выводится по русски, многоязычность не поддерживается.
ERROR:


Warning: Cannot modify header information - headers already sent by (output started at /home/****/public_html/forum/privmsg.php:1) in /home/****/public_html/forum/includes/page_header.php on line 483

Warning: Cannot modify header information - headers already sent by (output started at /home/****/public_html/forum/privmsg.php:1) in /home/****/public_html/forum/includes/page_header.php on line 485

Warning: Cannot modify header information - headers already sent by (output started at /home/****/public_html/forum/privmsg.php:1) in /home/****/public_html/forum/includes/page_header.php on line 486
Oder вне форума   Ответить с цитированием
Старый 17.02.2010, 12:11   #6
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 13,845
Репутация: 3619
По умолчанию

Что-то Вы криво в privmsg.php записали. Видимо, в самое начало пустую строку добавили или сохранили в utf-8
__________________
E-Mail: arigato.freelance@gmail.com
Arigato вне форума   Ответить с цитированием
Старый 25.10.2010, 15:16   #7
userilla
Новичок
 
Регистрация: 25.10.2010
Сообщений: 1
Репутация: 10
По умолчанию

Большое спасибо Arigato! Я просто не знал как избавится от этого хлама который постоянно лез ко мне. На других сайтах пробовал другие моды, но этот самый классный. Всем рекомендую - работает 200%. Не хотел я переходить на phpbb3, второй попроще и по дизайну больше нравится. Спасибо Arigato! Продолжаю юзать мой любимый phpbb2.
userilla вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита boostman Общие вопросы Delphi 4 21.06.2008 17:45
Установка форума на phpBB2 MaTBeu Помощь студентам 1 12.05.2008 08:57
Перенос базы с phpbb2 на phpbb3 + несколько доработок Hof Фриланс 3 10.05.2008 15:52
Регистрация на форумах в системе ucoz ben95 Работа с сетью в Delphi 5 28.04.2008 15:27
Microsoft Office Outlook : Как избавиться от спама? Rembo Софт 5 13.12.2007 15:08


23:13.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.