Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Защита формы картинкой с кодом без исп. сессий

13K
30 марта 2007 года
Tim_PL
25 / / 02.10.2006
Можно ли сделать защиту от автоматического заполнения форм с помощью картинки с изображением (GD) не используя сессии? Помогите, никак не могу найти, везде только через сессии...
271
30 марта 2007 года
MrXaK
721 / / 31.12.2002
банальный способ проверки... в какое-то hidden-поле формы пихается код с рисунка... соответственно при получении формы если поля хидден и поле введённого кода с рисунка совпадают, то введено правильно)
ессно это плохой вариант... поэтому можно использовать библиотеки обратимого шифрования... пихать в хидден зашифрованную строку, ключ шифрования хранится у тебя в скрипте, получаешь хидден-поле и введённый юзером код, расшифровываешь и сравниваешь... с пользователями никаких проблем не возникнет, а всякие программы вряд ли будут пытаться побдирать ключ и расшифровывать код))
http://ru2.php.net/manual/ru/ref.mcrypt.php
13K
30 марта 2007 года
Tim_PL
25 / / 02.10.2006
это понятно, я наврно немного неправильно поставил вопрос... Вот у меня, допустим, есть скрипт генерирующий картинку:
 
Код:
<?php
//img.php
header("Content-type: image/png");
srand( ((int)((double)microtime()*1000003)) );
//... генерирую последовательность символов $str, код
imagettftext($img_handle, 18, 0, 20,23,$color,"dragon.ttf",$str);
ImagePng ($img_handle);
ImageDestroy ($img_handle);
?>


я его подключаю в форме
<img src='img.php' />

Как мне узнать сгенерированное значение $str или как передать в img.php (делать как-нибудь так - img.php?id=12345, можно ли обойтись без шифрования)? Или я не так делаю? В тех статьях, которые я нашел значение получалось через сессионную переменную
15
30 марта 2007 года
shaelf
2.7K / / 04.05.2005
При генирации картинки вставляешь этот код в БД, ид записи засовываешь в хайден. При проверке по ид вытаскиваешь запись и уделяешь её. Всё.
271
30 марта 2007 года
MrXaK
721 / / 31.12.2002
бд не обязательно... хотя это ещё один вариант - использовать бд вместо сессии...
если без бд... в твоём коде - пихаешь в hidden твой $str (или какую-то функцию шифровки от него), получаешь после отправки формы 2 поля - одно код, что ввёл юзер, другое - хидден.. .если они равны то введено верно... шифрование для того чтобы юзер или робот не подсмотрел твой хидден...
но есть один минус... если юзер как-то получит ключ, которым ты шифруешь, то он просто введёт и в хидден и в поле для кода с рисунка валидные коды с твоим ключём... но нормальный ключ подобрать довольно сложно))

з.ы. а вообще это не надо... не угодили сессии - используй бд как shaelf написал... хотя спорный вопрос что будет быстрее работать - 2 дёрганья бд или 2 функции шифрования...
244
31 марта 2007 года
UAS
2.0K / / 19.07.2006
Цитата: Mr.Hacker
банальный способ проверки... в какое-то hidden-поле формы пихается код с рисунка... соответственно при получении формы если поля хидден и поле введённого кода с рисунка совпадают, то введено правильно)
ессно это плохой вариант... поэтому можно использовать библиотеки обратимого шифрования... пихать в хидден зашифрованную строку, ключ шифрования хранится у тебя в скрипте, получаешь хидден-поле и введённый юзером код, расшифровываешь и сравниваешь... с пользователями никаких проблем не возникнет, а всякие программы вряд ли будут пытаться побдирать ключ и расшифровывать код))
http://ru2.php.net/manual/ru/ref.mcrypt.php



Не катит. Программой отправляем запрос (ну например автозаполнитель форм), и в заголовке просто указываем одинаковое значение "как бы введенего числа с картинки" и значения поля hidden. Все. Система поломана)))

4.6K
31 марта 2007 года
Tokolist
268 / / 22.03.2007
ИМХО можно поизвращаться и сделать аналог сессий. Тоесть генерировать уникальное имя файла, записывать туда код на картинке, а в хайден-поле записывать имя файла. Получать через спрятанное поле имя файла, зачитывать из него код и сверять с введенным кодом картинки. Теоретически методом брутфорса можно угадать имя файла (но не думаю, что кто-то станет это делать). А если добавить проверку по $_SERVER['REMOTE_ADDR'] то вообще все будет идеально :)
Тоже самое можно сделать с записями в БД и уникальными ключами.
Вобщем для этого и придумали умные люди сессии чтоб так не извращаться.
15
31 марта 2007 года
shaelf
2.7K / / 04.05.2005
Сесии не всегда подходят. Например ситуация такая, отключены куки и нехочется урлу поганить.
271
01 апреля 2007 года
MrXaK
721 / / 31.12.2002
Цитата:
Не катит. Программой отправляем запрос (ну например автозаполнитель форм), и в заголовке просто указываем одинаковое значение "как бы введенего числа с картинки" и значения поля hidden. Все. Система поломана)))


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

244
01 апреля 2007 года
UAS
2.0K / / 19.07.2006
Mr.Hacker, ну да. Я забыл про шифорвание=)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог