|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
DezmASter |
|
||||||||
Дизайнер :) Профиль Группа: Участник Сообщений: 1520 Регистрация: 3.2.2006 Где: Украина, Запорожь е Репутация: 1 Всего: 109 |
Статья описывает способ реализации механизма, позволяющего бороться с автоматическим заполнением форм, ложными регистрациями и спамом через форму обратной связи.
Требования: PHP>=4.0.6, GD >=2.0. Исходные тексты можно скачать тут. Данная статья написана по мотивам статьи Nathan Rohler "Security Images in PHP" опубликованной на сайте #Dev Shed 9 августа 2004 года. Вообще, с начала, меня посетила мысль ее перевода, но, во первых автор выбрал интересный, но не самый тривиальный вариант решения проблемы, а во вторых, мне бы вряд ли удалость сформулировать на русском языке такое обилие мыслей. Последнее время, в связи с распространяющейся эпидемией спама, веб-мастера, стали все чаще и чаще прятать адреса своей электронной почты (E-Mail). Многие стали использовать формы обратной связи. Но как оказалось, такую защиту можно обойти. И уже на сегодняшний день, существует огромное количество программ, предназначенных для рассылки спама, через формы обратной связи. Наша задача - сделать так, чтобы сообщение вам смог отправить только "живой человек". Чаще всего, для этого используют небольшие картинки, на которых выводится текст. Пользователя просят продублировать этот текст в поле ввода. Если дублирование производится неверно, то форма не обрабатывается. На сегодняшний день мне не знакомо ни одной программы, способной обойти такую защиту. Я даже на знаю ни одной программы, вообще, хоть как-то пытающуюся распознать содержимое картинки. По этому, можно смело сказать, что сегодня нет необходимости как-то искажать изображение на картинке. Но мы смотрим в будущее. Генерация изображения Автор предложил следующий алгоритм: сложное изображение на картинке формируется с помощью заранее подготовленных подложек. После чего на подложки выводится текст, случайным шрифтом, случайного размер и, естественно, случайного содержания. Основной недостаток такого алгоритма заключается в том, что существующую "подложку" можно быстро вычислить. А после этого вычесть из изображения, которое необходимо распознать и таким образом получить картинку с чистым текстом. А для распознания такого текста уже сегодня существует масса программ. Наша задача - сделать абсолютно случайную подложку, с текстом, который не то что распознать сложно, его прочитать тяжело. Я бы предложил следующий алгоритм: 1. Создаем подложку (для этого можно использовать алгоритм построения фракталов) 2. Добавляем помехи - несколько случайных линий, цвета основного текста. 3. Выводим основной текст 4. Самое интересное - увеличиваем изображение в неровное количество раз - например, в 1.7, в 1.6 5. Уменьшаем изображение до оригинальных размеров Увеличивать и уменьшать изображение необходимо с использованием сглаживания, иначе даже человек не сможет прочитать текста. Если вам кажется, что рисовать фрактал слишком сложно, то можно нарисовать простую сетку. Принцип работы механизма При заходе пользователя на страницу с формой, мы создаем сессию и записываем в зарегистрированную переменную случайный код:
После того как случайный текст сгенерирован, необходимо вывести форму:
Скрипт, обрабатывающий данные, отправленные при помощи формы, должен работать примерно следующим образом:
Генерация изображения
Вроде все. Если что-то, оставляйте комментарии. Автор: mike Это сообщение отредактировал(а) DezmASter - 21.4.2007, 21:04 |
||||||||
|
|||||||||
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |