Навигация
Главная
Поиск
Форум
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
Бип из системно... 58726
Invision Power ... 57708
Организация зап... 57508
Модуль Forms 56549
Создание отчето... 55159
Приложение «Про... 54897
Подключение Mic... 54700
Оператор выбора... 54491
ТЕХНОЛОГИИ ДОСТ... 51214
Программируемая... 47862
Пример работы с... 46976
Имитационное мо... 46909
21 ошибка прогр... 41944
Реклама
Сейчас на сайте
Гостей: 10
На сайте нет зарегистрированных пользователей

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

Моделирование регулировочного участка цеха на GPSS + Пояснительная записка
Моделирование литейного цеха на GPSS + Пояснительная записка
Моделирование системы управления качеством производственного процесса на...

Реклама

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

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

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

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


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




  • генерируем случайное число с заданным количеством разрядов или слово из словаря (будет использоваться как надпись на картинке) - пароль
  • создаем случайный код сессии
  • во временном каталоге создаем файл с именем сессии, внутри содержится сгенерированный пароль
  • не забываем удалять старые файлы сессий, время жизни которых истекло - неудачные попытки авторизации
  • в заполняемой пользователем форме вставляем 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 Комментариев · 6609 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
База предприятий ...
CLR via C#
AVIwriter
Мод "проверочный ...
DateEdit
SearchAndReplace
Tag Игра "Пятнашк...
Панель для реклам...
Язык программиров...
FormShape [Исходн...
Visual Basic Script
Abbrevia
Библия для програ...
Сложный калькулятор
39 статьи по Delphi
AboutSystem
DCAVI
Иллюстрированный ...
Pirc
Защита от спама ...

Топ загрузок
Приложение Клие... 100276
Delphi 7 Enterp... 75278
Converter AMR<-... 20017
Borland C++Buil... 10487
GPSS World Stud... 8862
Borland Delphi ... 7492
Turbo Pascal fo... 6868
Visual Studio 2... 4869
Калькулятор [Ис... 3847
FreeSMS v1.3.1 3482
Случайные статьи
макроопределение д...
С и С++ - второсте...
Демонстрация неско...
Все для разработки
Так, пользователь ...
Раскрутка сайта в ...
Статические поля-м...
Процедура GetModeR...
Жесткая кодировка ...
Как работают модули
Типы атрибутов
Клуб Слотобаза
Использование ext/...
Логическое выражение
Модификация корпус...
чтобы переданные п...
Суть ложных предст...
Они могли произойт...
Группа блоков созд...
Подтверждение реги...
Оглядывайтесь назад
Описание абстрактн...
Предикат functor(T...
Глава 3. Экономика...
Эмулятор микропроц...
Статистика



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


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