Автор Тема: Динамическая картинка  (Прочитано 8834 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« : 27 Ноября 2003, 16:56:22 »
Прочел статейку по защите сайта от перебора паролей средством динамичесой картинки с номером...
используется модул GD.pm

решил реализовать:

Скрипт пишет фому с предварительным
Content-type:text/html\\n\\n
....

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

Content-type:image/jpeg\\n\\n

Кароче картинка не кажется :(
Вместо нее казяблики...

Как поступить!

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #1 : 27 Ноября 2003, 17:19:24 »
Hatchet
Я бы посоветовал, форму выводить статично, а скрипт выводящий картинку вставить через SSI, вот только может возникнуть трабла с передачей данных (как раз таки пароля) из этого скрипта в другой, все зависит от реализации всего остального...

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #2 : 27 Ноября 2003, 17:34:28 »
Или с делать 2 скрипра, но одно точно скрип выводящий картинку дожен  вызыватся примерно так
Но я хотя бы знаю, что ни чего не знаю

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #3 : 27 Ноября 2003, 17:36:31 »
К сожалению при вывводе картинки через SSI всеравно битовый вид...

конфликтуют Content-type-ы..

вероятно, тот что выше имеет приоритет и игнорируется следующий... а есть ли возможность отключить временно действие Content-type...

Или может попробовать сгенерированную картинку сохранить гденить п показать обычным способом а потом затереть?

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #4 : 27 Ноября 2003, 17:40:01 »
Hatchet
Ой да... что-то я гнать вечером начал... SSI не прокатит... Billi
прав...
Останется только связь организовать...

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #5 : 27 Ноября 2003, 17:42:19 »
Hatchet
Лучше не картинку генерить а как раз таки код, который второй скрипт подхватит, единственно, что при одновременном двойном запуске скриптов, код должен быть для каждого пользователя свой...

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #6 : 27 Ноября 2003, 17:42:45 »
а блин как ее сохранить ? :)
чтоб она jpeg-ом была

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #7 : 27 Ноября 2003, 17:54:39 »
Hatchet
Зачем её сохранять, если ты её покажешь всего один раз в её жизни?

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #8 : 27 Ноября 2003, 17:56:53 »
Все сделал :))))

Уряяяя

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #9 : 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")||die;
print FILE $number;
close(FILE);

open(FILE,">$datadir/$id.jpg")||die;
print FILE $image->jpeg;
close(FILE);
#Показываем картинку и скрытое полу с id по которому можно сравнить введенный номер.
print "";
print "В нижеследующее поле введите номер, который Вы видите на картинке.";
print "";
print "Номер";

#Остально обрабатывает скрипт авторизации...

Толко не забудте затереть созданные файлы - папка разбухнет :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #10 : 29 Ноября 2003, 13:29:48 »
И сразу несколько вопросов...

откуда ты берешь $id, и разное ли значение этой переменной для разных пользователей?
IMHO $number не нужно записывать в файл, лишнее действие, проще закриптовать его и предать в форме hidden, а потом при подтверждении формы параметр Number тоже криптуешь и сравниваешь...
Тем более ты передаешь $id через форму... мне остается только найти файл $datadir/$id с номером... а так как $datadir участвует и сохранении изображения, то вообще никаких проблем... Тем более не вздумай передавать $id без проверки...

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #11 : 05 Декабря 2003, 00:27:13 »
В статье журнала было рекомендовано не передавать id в поле hidden... якобы можно написать парсер чтоб его извлекать %)

да... придется немного изменить - например, файл с записаным $number надо положить в защищенную .htaccess папку.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #12 : 05 Декабря 2003, 09:35:11 »
Hatchet
Чем тебе не нравится передача закриптованного $number в поле hidden?

Оффлайн Hatchet

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическая картинка
« Ответ #13 : 05 Декабря 2003, 20:02:18 »
Я ж грю... в статье жернала Хакер было написано :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Динамическая картинка
« Ответ #14 : 05 Декабря 2003, 20:42:47 »
Hatchet
Что написано? что $id передавать нельзя???
А причем тут закриптованный $number??? И что он может тебе дать для взома???

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28