Навигация
Главная
Поиск
Форум
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
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 63569
Модуль Forms 63394
ТЕХНОЛОГИИ ДОСТ... 60180
Пример работы с... 59280
Имитационное мо... 55618
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

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

Моделирование автовокзала + Отчет + Блок схема
База данных - словарь терминов на Delphi + Пояснительная записка
Моделирование станции технического обслуживания на GPSS + Отчет

Реклама



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

ПОДПИСЫВАЙСЯ на канал о программировании
"Введите число, изображенное на картинке"
Как это работает

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

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

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


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




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

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Email
32 урока по Delphi
GPSS World Studen...
Время загрузки ...
Halcyon
Платформа програм...
Отключение и вклю...
Таймер и секундомер
Паскаль и Дельфи....
C# в кратком изло...
Экранная лупа
База англоязычных...
Tenis [Исходник н...
Создание оригинал...
Заставка. Изображ...
Программа предназ...
Распознавание тек...
Мониторинг сервер...
Работа с картотеками
Geo-Whois

Топ загрузок
Приложение Клие... 100444
Delphi 7 Enterp... 85618
Converter AMR<-... 20065
GPSS World Stud... 12472
Borland C++Buil... 11525
Borland Delphi ... 8480
Turbo Pascal fo... 7020
Visual Studio 2... 4987
Калькулятор [Ис... 4727
FreeSMS v1.3.1 3533
Случайные статьи
Модемы для сжатия ...
Что делают бесклас...
Базы данных и базы...
и режим ядра гаран...
Приведение типа
Что является станд...
Конструктор Qoob
Когда одного недос...
Запуск закачки
Здесь в первом слу...
клиенты POP3/SMTP
Инфраструктуры для...
Синхронизация буфе...
Дорвеи и поисковые...
Операнды компьютер...
туннеля
Каналы Ethernet LA...
Процедура Line - в...
Безопасность локал...
Решение головоломк...
OpenGL и Delphi (3...
Отображение номера...
Управление динамич...
Обзор текстовых ба...
Книги и статьи
Статистика



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


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