Перейти к контенту

Изменяем код безопасности


Рекомендуемые сообщения

Данная статейка посвящена изменению кода безопасности IPB 2, выводимого при регистрации и предназначенного для предотвращения автоматических регистраций спам-ботов.

 

Мы будем изменять код безопасности, выводимый при помощи GD lib.

Для начала удостоверимся, что в Админцентре » Системных настройках » Безопасности опция Включить защиту от ботов? выставлена на "Продвинутый" режим. Как и указано, для корректной работы этого типа защиты от ботов необходима установленная на сервере библиотека GD. Если возникают проблемы с отображением кода безопасности в данном режиме - очевидно, на хостинге отсутствует GD lib. Трясите хостера в случае чего.

 

Итак, заменим стандартный шрифт на любой другой TTF-шрифт, сотни которых можно слить в инете, настроим его размер, угол наклона. :)

 

Для начала в папке с форумом, где лежит index.php, создадим директорию, к примеру, fonts, а в неё загрузим нужные TTF-шрифты. желательно дать им всем простые короткие имена файлов, маленькими буквами, чтобы потом не путаться с регистром.

 

Функция, отвечающая за вывод кода безопасности в GD-режиме называется show_gd_img и лежит в файле functions.php.

 

Начинаем копать functions.php. Вы ведь уже сделали его резервную копию? :D

1. Во-первых, сведём на нет последствия умышленного растягивания изображения скриптом.

Находим:

$tmp_x = 140;
$tmp_y = 20;

$image_x = 210;
$image_y = 65;

И сделаем, чтобы число попарно совпадали, например:

$tmp_x = 210;
$tmp_y = 65;

$image_x = 210;
$image_y = 65;

Это чтобы изображение не растягивалось и эстетический эффект от юзания кульного TTF шрифта не омрачался. Всё равно с таким количеством шума на картинке ни один спам-бот это несчастное число не распознает.

 

2. Теперь находим это:

imagestring($tmp, 5, 0, 2, $content, $black);

Теперь самое главное! Заменяем на:

//New sKool TTF Security Code:
imagettftext($tmp, SIZE, ANGLE, X, Y, $black, "/path/font.ttf", $content);

Вот тут начинается подгонка шрифта под картинку ;) Поясняю:

SIZE - заменяем на размер шрифта в пунктах

ANGLE - угол наклона строки в градусах

X - координата X нижнего левого угла первого символа в строке

Y - координата Y нижнего левого угла первого символа в строке

/path/font.ttf - путь относительно корневой директории форума до файла шрифта

Лично я путём недолгих мытарств подобрал такие подходящие мне значения:

imagettftext($tmp, 22, 13, 1, 64, $black, "/font/mt.ttf", $content);

 

Что получилось, можете увидеть здесь

post-5780-1112426380_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
  • Ответы 58
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Вот такая схема работает, а приведенный выше рецепт нет. Почему ?

 

<? 
header("Content-type: image/png"); 
$im = @imagecreate (500, 500) 
  or die ("Cannot Initialize new GD image stream"); 
$background_color = imagecolorallocate($im, 0, 0, 255); 
$text_color = imagecolorallocate($im, 0, 255, 255); 
imagettftext($im, 20, 45, 200, 200,  $text_color, "/font/bt.ttf","1234567890"); 
imagepng($im); 
?>

 

[1115844467:1115847070]причина в этом

if ( $ibforums->vars['gd_version'] == 2 )

 

по умолчанию там стоит 1, а если специально ставилась GD 2.0.x, то могут быть проблемы

Ссылка на комментарий
Поделиться на других сайтах

К сожалению, не функционирует. Функция просто ничего не рисует.

 

replicant, можно подробнее про ваш фикс? Я не совсем понял.

[1116255642:1116260672]Провел серию тестов, не работает ни с GD1, ни с GD2. Кто-нибудь ещё пробовал менять шрифт?

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
  • 1 месяц спустя...
А для 1.3.1 можно? :D
Ссылка на комментарий
Поделиться на других сайтах

Я начал менять скины и у меня пропал код подверждения , воспользовался вашим методом , результатов нет ! Что могло случиться ! gd менял , ставил как 1 так и 2 !
Ссылка на комментарий
Поделиться на других сайтах

Так что нельзя?
Ссылка на комментарий
Поделиться на других сайтах

Дык так же и для 1.3 сделайте.

 

В админке включаем продвинутую защиту от ботов, лезем в functions.php Ищем функцию function show_gd_img($content="")

Там пишем совершенно такие же параметры для imagettftext. (подбираем для себя)

Ищем хороший шрифт, свои цвета - "чёрный", "белый" и "серый"

например $white = ImageColorAllocate($im, 19, 19, 19); радуемся красоте :D

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Шрифт изменил а вот красивую фигурку и наклон цифр в 1.3 никак немогу 8(

 

Какие шрифты более рагульны чтоб разбирать только в трезвом виде можно было? И где их скачать?

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

Не понял, а зачем тебе в 1.3.1 этот мод? Там же есть в админке поле для указания TTF-шрифта регистрации.

 

Что до мода — попробовал, под себя подогнал (проблемы были с локальным апачем — поборол). Единственный нюанс — путь к шрифту надо прописывать не /path/font.ttf, а ROOT_PATH."path/font.ttf". Так универсальнее. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...

Сделал похитрее.

 

Вместо

imagettftext($tmp, 22, 13, 1, 64, $black, "/font/font.ttf", $content);

Сотворил это

srand((double) microtime()*1000000);

	imagettftext($tmp, 22, rand(5 , 15),  rand(1 , 80),  rand(50 , 64), $black, "/font/font.ttf", $content);

Ссылка на комментарий
Поделиться на других сайтах

Zhezl а поподробнее, что именно ты добавил?
Ссылка на комментарий
Поделиться на других сайтах

Еще исхитрился

1. Делаем всё как в первом посте.

 

2. Случайно гоняем и крутим надпись по картинке:

 

Добавляем еще цветного шума:

$circles = 3;

Меняем на

$circles = 5;

 

Это

imagettftext($tmp, 22, 13, 1, 64, $black, "/font/font.ttf", $content);

 

Меняем на это:

		srand((double) microtime()*1000000);
	$angle_pn = rand (1,2);
		if ( $angle_pn == 1 )
	{
		imagettftext($tmp, 22, rand(5 , 15),  rand(1 , 80),  rand(50 , 64), $black, "/font/font.ttf", $content);

	}
	else {
		imagettftext($tmp, 22, (-1 * rand(5 , 15)),  rand(1 , 80),  rand(20 , 40), $black, "/font/font.ttf", $content);
	}

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
на 2.0.4 ни один из вариантов у меня не работает... loading image висит постоянно (были проделывал дикие манипуляции с путями и опробывано штук 10 разных шрифтов) :D
Ссылка на комментарий
Поделиться на других сайтах

OverHerz: Я всю тему перерыл, пробывал всё, что только можно. Надеюсь "защита от ботов - Продвинутая" в админке форума подразумевает gd2 ?
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.