Модификации стандартной капчи MODx

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

Стандартная капча

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

Изменение внешнего вида капчи

В простейшем случае можно ограничиться изменением фоновых рисунков и выбором шрифта, хотя иногда полезно внести небольшие изменения в программу генерации капчи. Так как посетителям намного удобнее вводить цифры, а не буквы, вначале следует при настройке конфигурации системы на вкладке Пользователи в поле Слова для генерации CAPTCHA-кодов ввести 1,2,3,4,5,6,7,8,9,0. В результате будут генерироваться четырехзначные (а иногда и трехзначные) числа, которые легко ввести любому пользователю. Вместе с тем надежность защиты практически не уменьшится по сравнению с использованием слов совместно с тремя числами.

Доработанная капча

Далее следует заменить фоновые рисунки. В папке manager/includes/noises необходимо отредактировать файлы noise1.jpg, noise2.jpg, noise3.jpg и noise4.jpg, оставив неизменным размер изображений. Если вы хотите сделать больше или меньше вариантов фонов, в файле manager/includes/veriword.php необходимо найти строку $img_file = $this->dir_noise."noise".rand(1,4).".jpg"; и изменить четверку на нужную цифру. После этого, естественно, необходимо создать заданное количество фоновых изображений.

Чаще всего для улучшения внешнего вида капчи рекомендуется использовать необычный шрифт. Файл шрифта следует поместить в папку manager/includes/ttf. Хотя можно использовать несколько шрифтов, которые будут выбираться случайным образом, лучше ограничиться одним шрифтом, удалив старые файлы шрифтов из данной папки.

После изменения фона и шрифта часто выясняется, что цвет и размер символов не слишком удачен. Для исправления ситуации следует внести изменения в файл manager/includes/veriword.php. Цвет текста задается командой $text_color = imagecolorallocate ($im_text, 0, 51, 153);, где три числа означают цветовые составляющие в модели RGB, то есть значения для красной, зеленой и синей составляющей цвета. Изменив цифры в этой команде, вы измените цвет генерируемых символов. Если фон отличается от белого, потребуется изменить и фоновый цвет текста, иначе на краях символов появится светлая бахрома. Для задания цвета фона следует изменить команду $bg_color = imagecolorallocate ($im_text, 255, 255, 255);. Если генерируемый текст слишком мелкий, можно несколько увеличить его. Для этого в команде $text_size = round((20 * $this->im_width)/$text_width); нужно увеличить число 20. Далее можно настроить прозрачность текста. Найдите команду imagecopymerge и перейдите к последнему параметру, по умолчанию равному 70. Это и есть прозрачность текста. Увеличив значение до 100, вы сделаете надпись непрозрачной, а уменьшив - сделаете генерируемые символы более прозрачными.

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

Усложнение капчи

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

Для генерации случайной последовательности символов необходимо модифицировать функцию pick_word. Например, если заменить все команды данной функции следующими строками:

$base='ABCDEFGHKLMNOPQRSTWXYZabcdefghjkmnpqrstwxyz123456789';
$max=strlen($base)-1;
$vcode='';
for ($i = 0; $i <= 5; $i++)
	$vcode.=$base{mt_rand(0,$max)};
return $vcode;

То в итоге будет генерироваться строка из шести случайных символов, содержащих числа и латинские буквы в разном регистре. Заменив первую команду на $base='0123456789';, вы получите код, состоящий только из цифр.

Далее можно предлагать выполнить какое-либо действие из предлагаемых цифр. Например, при генерации кода из четырех цифр можно предложить ввести их сумму. Для этого необходимо сгенерировать нужный код описанным выше способом и изменить в функции set_veriword последнюю строку на $_SESSION['veriword'] = (string) ($this->word[0]+$this->word[1]+$this->word[2]+$this->word[3]);. Естественно, в шаблоне, где выводится капча, надо написать, что требуется ввести не просто цифры, а их сумму.

Усложненная капча

Можно ввести и более глубокие исправления в стандартную капчу. Для этого скачайте самораспаковывающийся архив, в котором находится модифицированная капча, щелкнув мышью по ссылке. Распакуйте полученный архив и поместите файлы рисунков в папку manager/includes/noises, заменив имеющиеся там файлы. Также замените файл manager/includes/veriword.php версией из скачанного архива. Теперь на страницах сайта будет выводиться код из восьми цифр, только четыре из которых следует учитывать. Цвет этих цифр написан на фоновом изображении. Например, в расположенном выше примере слева следует ввести код 9628, а справа - 6491.

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

 

Реклама

Поиск на сайте

Введите ваш запрос для начала поиска.