Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Гостевая книга ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Эмулятор микроп... 65535
Бип из системно... 60764
Invision Power ... 58649
Организация зап... 58615
Модуль Forms 57076
Приложение «Про... 56862
Оператор выбора... 56299
Создание отчето... 56025
Подключение Mic... 55891
ТЕХНОЛОГИИ ДОСТ... 52226
Программируемая... 49543
Пример работы с... 48069
Имитационное мо... 47770
21 ошибка прогр... 42736
Реклама
Сейчас на сайте
Гостей: 10
На сайте нет зарегистрированных пользователей

Пользователей: 13,022
новичок: igra87
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование интернет магазина (Apache, Php, Html) на GPSS + Блок схема
Расчет размера дохода на одного человека в Turbo Pascal
Создание последовательности окон и передвижение окон по экрану на Turbo ...

Реклама

"Введите число, изображенное на картинке"
Как это работает

Когда происходит заполнения полей с данными, система просит пользователя указать код, который он видит на картинке.

После проверки правильности ввода происходит решение - пускать клиента в систему или нет.

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


Алгоритм работы




  • генерируем случайное число с заданным количеством разрядов или слово из словаря (будет использоваться как надпись на картинке) - пароль
  • создаем случайный код сессии
  • во временном каталоге создаем файл с именем сессии, внутри содержится сгенерированный пароль
  • не забываем удалять старые файлы сессий, время жизни которых истекло - неудачные попытки авторизации
  • в заполняемой пользователем форме вставляем hidden поле с кодом сессии и поле ввода пароля
  • генерируем и показываем на странице подготовленную картинку с паролем (делаем ее трудночитаемой для возможных анализаторов, но понятной человеку)
  • после отправки заполненной формы сравниваем содержимое файла сессии с введенным паролем, если значения совпадают - значит форму заполняет человек, вносим данные
  • удаляем файл завершившейся сессии


Замечания по реализации



Сначала была мысль не использовать файлы сессий, а передавать в форме в hidden поле зашифрованный по MD5 пароль или обойтись просто созданием временных файлов с именами-значениями пароля, и проверять только их наличие.

Но решил все же делать с запасом надежности.

Случайный пароль для картинки



$kol_digit=5;
@pass_chars=(0..9);

srand();
$password=join("", @pass_chars[map {rand @pass_chars}(1..$kol_digit)]);

Не забываем раскручивать генератор случайных чисел.

В примере пароль создается исключительно из цифр, но для повышения безопасности можно добавить и буквы


@pass_chars=("A".."Z", "a".."z", 0..9, qw(% ! $ % ^ & *));

Также можно использовать слова и куски текста из словаря.

Шифрованный код сессии



Используется модуль Perl Digest::MD5 (http://search.cpan.org/dist/Digest-MD5/)

Уникальная строка для шифрования - текущее время в raw-формате, а также процесс скрипта.


$salt=Digest::MD5->new;
$hash = $salt->add(time().$$);
# шифруем методом ASCII-HEX
$session_code=$hash->hexdigest;


Подготовленная картинка с паролем



Картинка отображается на странице как STDOUT работы небольшого скрипта, генерирующего картинку, код сессии передаем скрипту как параметр


<img align="right"
src="/cgi-bin/anti_robot_img.cgi?code=<session_code>"
border=1
alt="">

Если параметр не задан - генерируется картинка со случаным паролем.

Для создания и вывода картинки используется модуль Image::Magick
(http://www.imagemagick.org/)

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

После этого "зашумляем" изображение - сверху в случайных местах разбрасываем разноцветные точки.

Можно еще добавить вывод букв разными шрифтами и цветами, а также использовать разноцветный фон (например кусочки фотографий)

Исходники модуля можно взять по адресу http://voldemar.info/files/anti_robot_img.pm

Опубликовал Kest October 31 2008 18:30:24 · 0 Комментариев · 6670 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Autorunner
Globus VCL Extent...
Illusion
Введение в станда...
Синтаксический ан...
VFW
Работа с базами д...
Программирование ...
Создание меню на ...
ComboBox97
Черный круг двига...
ЯЗЫК ПРОГРАММИРОВ...
EMS QuickExport S...
ProLIB18
TrayComp
CoolHints2k
JanComp
C# в кратком изло...
Самоучитель PHP 5...
Электронный магаз...

Топ загрузок
Приложение Клие... 100307
Delphi 7 Enterp... 77963
Converter AMR<-... 20021
Borland C++Buil... 10679
GPSS World Stud... 9277
Borland Delphi ... 7669
Turbo Pascal fo... 6884
Visual Studio 2... 4906
Калькулятор [Ис... 3997
FreeSMS v1.3.1 3486
Случайные статьи
Подписанное сообще...
Решение головоломк...
Формирование запро...
учетными записями ...
Идеальная ЛВС
Ограничения на дли...
МНОГОКАНАЛЬНЫЕ УСТ...
Выполнение LWP пос...
Оптические дисководы
В Windows 10 есть ...
Что такое инфографика
107.40.
Организация взаимо...
Чтение структуры P...
Настройте агент SN...
Количество информа...
Применение туннель...
Программа содержи...
Решения к главе 6
Результаты работы ...
последний месяц, п...
Язык XSL как спосо...
Используя окно Мой...
филиале, вы ограни...
Протокол MGCP
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?