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

Защита от спама в форумах phpBB2. САРТСНА

Автор: Arigato

Все, так или иначе, сталкивались с капчей. САРТСНА (Completely Automated Public Turing test to tell Computers and Humans Apart) – полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей).

Представляет собой компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. В этой статье я хочу рассказать о двух методах защиты форума на базе движка phpBB2 от спамеров и их ботов… Технология САРТСНА была создана в 2000 году учеными из университета Карнеги-Меллона, и сегодня используется в Интернете практически повсеместно. Основная идея теста САРТСНА: предложить пользователю такую задачу, которую легко решает человек, но которую крайне трудно решить компьютеру. Как правило, это задачи на распознавание зрительных образов. Наиболее часто эта технология используется в различных Интернет-сервисах, в частности – хранилищах файловых архивов и форумах.

Уязвимости защиты САРТСНА

При недостаточной степени защиты скриптов спамбот может пройти тест САРТСНА и без распознавания картинок. В этом случае он либо подменяет идентификатор сессии, либо парсит информацию, содержащуюся на WEB странице и определяет то, что изображено на картинке. Если количество вариантов ответов невелико, спамбот может «угадать» ответ. Как правило, используется несколько параллельных потоков, благодаря чему скорость перебора зависит от полосы доступного канала. Кроме того, возможно и накопление базы вопросов и ответов, и рано или поздно вся она будет у него.

Существуют программы, распознающие конкретные реализации САРТСНА, к примеру PWNtcha. Да и никто не мешает спамеру подключать модули программ распознавания текста, тот же FineReader. Различают «сильную» (сильно размытая и не контрастная картинка) и «слабую» САРТСНА. Что же делать и как защититься от спамботов?

Методы защиты

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

  1. Изменение картинки при регистрации на форумах 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 шрифт [1], содержащий латинские буквы и цифры. Как показал опыт применения данного метода на многих форумах, автоматическая регистрация ботов после такой модификации прекращается полностью (см. рисунок):

  2. Разрешить отправлять личные сообщения только пользователям с 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 определяет количество сообщений на форуме, после которого пользователю разрешается отправлять ЛС. Читать ЛС может любой пользователь. Предупреждение о запрете отправки ЛС выводится по-русски, многоязычность не поддерживается.

Заключение

Мы уже выяснили, как убрать основную уязвимость – фиксированный шрифт и фиксированное положение символов. Но, как всегда добавим «ложку дегтя». Дело в том, что сегодня получили распространение сервисы по типу CaptchaExchange Server. Эти сервисы направлены на «обход» картинок САРТСНА, путем ручного «человеческого» распознавания символов. Принцип работы основан на системе баллов, которые пользователь может заработать, распознавая в свободное время картинки для других пользователей. Набранные баллы пользователь может потратить позже, в любое удобное время, запустив программу автоматического скачивания файлов с файлообменного сервера или для регистраций. К сожалению и второй, рассмотренный нами, метод не дает 100% гарантию, но основная цель будет достигнута – это снижение нагрузки на сервис и относительное спокойствие пользователей.

Вы можете ответить или разместить запись на вашем сайте.

Ответить

Powered by Procoder