Программирование => Perl => Тема начата: Hatchet от 27 Ноября 2003, 16:56:22
Название: Динамическая картинка
Отправлено: Hatchet от 27 Ноября 2003, 16:56:22
Прочел статейку по защите сайта от перебора паролей средством динамичесой картинки с номером... используется модул GD.pm
решил реализовать:
Скрипт пишет фому с предварительным Content-type:text/html\\n\\n ....
когда требуется отобразить картинку... на этойже странице, с полем ввода требуется
Content-type:image/jpeg\\n\\n
Кароче картинка не кажется :( Вместо нее казяблики...
Как поступить!
Название: Динамическая картинка
Отправлено: Phoinix от 27 Ноября 2003, 17:19:24
Hatchet Я бы посоветовал, форму выводить статично, а скрипт выводящий картинку вставить через SSI, вот только может возникнуть трабла с передачей данных (как раз таки пароля) из этого скрипта в другой, все зависит от реализации всего остального...
Название: Динамическая картинка
Отправлено: Billi от 27 Ноября 2003, 17:34:28
Или с делать 2 скрипра, но одно точно скрип выводящий картинку дожен вызыватся примерно так
Название: Динамическая картинка
Отправлено: Hatchet от 27 Ноября 2003, 17:36:31
К сожалению при вывводе картинки через SSI всеравно битовый вид...
конфликтуют Content-type-ы..
вероятно, тот что выше имеет приоритет и игнорируется следующий... а есть ли возможность отключить временно действие Content-type...
Или может попробовать сгенерированную картинку сохранить гденить п показать обычным способом а потом затереть?
Название: Динамическая картинка
Отправлено: Phoinix от 27 Ноября 2003, 17:40:01
Hatchet Ой да... что-то я гнать вечером начал... SSI не прокатит... Billi прав... Останется только связь организовать...
Название: Динамическая картинка
Отправлено: Phoinix от 27 Ноября 2003, 17:42:19
Hatchet Лучше не картинку генерить а как раз таки код, который второй скрипт подхватит, единственно, что при одновременном двойном запуске скриптов, код должен быть для каждого пользователя свой...
Название: Динамическая картинка
Отправлено: Hatchet от 27 Ноября 2003, 17:42:45
а блин как ее сохранить ? :) чтоб она jpeg-ом была
Название: Динамическая картинка
Отправлено: Phoinix от 27 Ноября 2003, 17:54:39
Hatchet Зачем её сохранять, если ты её покажешь всего один раз в её жизни?
Название: Динамическая картинка
Отправлено: Hatchet от 27 Ноября 2003, 17:56:53
Все сделал :))))
Уряяяя
Название: Динамическая картинка
Отправлено: Hatchet от 28 Ноября 2003, 21:54:51
Не для похвалы:
реализация такая: use Digest::MD5; use GD;
$datadir="/home/....";
print "Content-type: image/jpeg\\n\\n";
$image = new GD::Image(50,50); $white = $image->colorAllocate(255,255,255); $black = $image->colorAllocate(0,0,0); $image->rectangle(0,0,50,50,$black); $number=int rand 3333; $image->fill(49,49,$black); $image->string(gdGiantFont,5,15,"$number",$white); binmode STDOUT; #создаем имя файликов картинки и содержащий цифру $salt=Digest::MD5->new; $string=time().$$; $hash=$salt->add($string); $id=$hash->hexdigest;
open(FILE,">$datadir/$id.jpg")||die; print FILE $image->jpeg; close(FILE); #Показываем картинку и скрытое полу с id по которому можно сравнить введенный номер. print "
"; print "
В нижеследующее поле введите номер, который Вы видите на картинке.
"; print ""; print "
Номер
";
#Остально обрабатывает скрипт авторизации...
Толко не забудте затереть созданные файлы - папка разбухнет :)
Название: Динамическая картинка
Отправлено: Phoinix от 29 Ноября 2003, 13:29:48
И сразу несколько вопросов...
откуда ты берешь $id, и разное ли значение этой переменной для разных пользователей? IMHO $number не нужно записывать в файл, лишнее действие, проще закриптовать его и предать в форме hidden, а потом при подтверждении формы параметр Number тоже криптуешь и сравниваешь... Тем более ты передаешь $id через форму... мне остается только найти файл $datadir/$id с номером... а так как $datadir участвует и сохранении изображения, то вообще никаких проблем... Тем более не вздумай передавать $id без проверки...
Название: Динамическая картинка
Отправлено: Hatchet от 05 Декабря 2003, 00:27:13
В статье журнала было рекомендовано не передавать id в поле hidden... якобы можно написать парсер чтоб его извлекать %)
да... придется немного изменить - например, файл с записаным $number надо положить в защищенную .htaccess папку.
Название: Динамическая картинка
Отправлено: Phoinix от 05 Декабря 2003, 09:35:11
Hatchet Чем тебе не нравится передача закриптованного $number в поле hidden?
Название: Динамическая картинка
Отправлено: Hatchet от 05 Декабря 2003, 20:02:18
Я ж грю... в статье жернала Хакер было написано :)
Название: Динамическая картинка
Отправлено: Phoinix от 05 Декабря 2003, 20:42:47
Hatchet Что написано? что $id передавать нельзя??? А причем тут закриптованный $number??? И что он может тебе дать для взома???
Название: Динамическая картинка
Отправлено: Hatchet от 05 Декабря 2003, 22:30:06
$number не закриптован!
он записан в файле с именем $id
Название: Динамическая картинка
Отправлено: Phoinix от 06 Декабря 2003, 11:22:57
Цитировать
$number не закриптован! он записан в файле с именем $id
Ты знаешь... я как бы в курсе...
Цитировать
$number не нужно записывать в файл, лишнее действие, проще закриптовать его и предать в форме hidden, а потом при подтверждении формы параметр Number тоже криптуешь и сравниваешь...