Страницы: 1
Доброго времени суток всем!
Есть у меня форма для закачки картинок на сервер. Она состоит из инпута и имаджа:
<img alt="Добавить фото" title="Предпросмотр изображения" name="pict_prev" id="pict_prev" /> <input type="file" name="pict" ID="pict" onchange="pict_onpropertychange()" id="pict" />
Я хочу чтобы при выборе картинки она показывалась пользователю предпросмотром:
function pict_onpropertychange(){ alert(document.getElementById("pict").value); document.getElementById("pict_prev").setAttribute("src", document.getElementById("pict").value); }
Этот код без проблем отрабатывает в ИЕ, но в ФФ изображение на появляется.
Подсткажите плиз в чем может быть проблема?
Отсутствует
Надо
setAttribute("src", "file://"+document.getElementById("pict").value+"");
Фокс же так файлы с винта открывает.
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
Yan
Безопасности Лисы или Вообще?
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
stoneflash
Вообще. Возможность загружать локальные картинки -- дыра в безопасности, которая может позволить сайтам собирать информацию о ПО, установленном у пользователя, и т.п. Любой нормальный браузер этого не позволит. Я не проверял, но более чем уверен, что IE этого тоже не позволяет.
Отсутствует
Этот трюк на сервере работать не будет, т.к. политика безопасности запрещает web-страницам загружать локальные ресурсы.
При чем здесь сервер? Скрипт по-определению отрабатывается на клиенте а не на сервере. На сервер данные передаются только в виде posto'v geto'v
Вообще. Возможность загружать локальные картинки -- дыра в безопасности, которая может позволить сайтам собирать информацию о ПО, установленном у пользователя, и т.п. Любой нормальный браузер этого не позволит. Я не проверял, но более чем уверен, что IE этого тоже не позволяет.
Посмотрите на аватар stoneflash"а откуда-то он взялся на сайте...?
Его именно загрузили на сервер посредством клиента, наверняка того же самого лиса.
А в том, что это работает на ИЕ- можете убедится сами- весь необходимый код я привел.
Так шо сорри, но это все
Отредактировано horseman (11-02-2007 01:55:10)
Отсутствует
Yan пишетЭтот трюк на сервере работать не будет, т.к. политика безопасности запрещает web-страницам загружать локальные ресурсы.
При чем здесь сервер?...
Имеется в
виду, это не будет работать, когда страница будет отсылаться с сервера. Работать будет только с localhost.
...не проверял, но более чем уверен, что IE этого тоже не позволяет.
Я проверил на denwer'е, позволяет. (отображает, по крайней мере картинку).
Отредактировано Anton (11-02-2007 02:52:30)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Обрабатываются-то они на клиенте, но если странице, открытой с веба, позволить загружать локальный контент, то она сможет легко залить на сервер любую инфу без ведома пользователя. Тебе бы понравилось, если бы у тебя веб-сайт украл все пароли?
Закрой кран
Включи свет ©
Fire! Kill IE is your desire | NULL | NULL
Отсутствует
Anton
Я проверил на denwer'е, позволяет. (отображает, по крайней мере картинку).
Мда, по поводу любого нормального браузера я погорячился. Сейчас пишу из Firefox 0.8, в нём этот баг также присутствует.
INFOMAN
Ну, пароли-то через эту дырку не вытащить, но узнать некоторую информацию о системе пользователя вполне возможно.
horseman
Для примера состряпал страничку, которая грузя локальные картинки, пытается определить установленное у пользователя в C:/Program Files/ ПО:
http://xsms.nm.ru/temp/ie/local_images_detecting/
(К сожалению, я выбрал не самые популярные программы, у Вас их может и не быть, но смысл должен быть понятным).
В ИЕ работает даже с web-сайта (из-за дыры), в Firefox 1.5 и Опера9 только с локалхоста.
Отсутствует
Yan
Для примера состряпал страничку, которая грузя локальные картинки, п
Это ли не доказывает, что вышеупомянутый скрипт будет работать?
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
stoneflash
Только в IE:
В ИЕ работает даже с web-сайта (из-за дыры), в Firefox 1.5 и Опера9 только с локалхоста.
Кстати, надо бы в IE7 ещё проверить, быть может там эту возможность уже прикрыли.
Отсутствует
При чем здесь сервер? Скрипт по-определению отрабатывается на клиенте а не на сервере. На сервер данные передаются только в виде posto'v geto'v
Скрипт грузится с сервера и отрабатывает на клиенте. Если он получит доступ к компьютеру клиента, отправить обратно данные не составит труда, например, через JavaScript через get-запрос, сменив адрес картинки на странице, или документа во фрейме.
Отсутствует
Обрабатываются-то они на клиенте, но если странице, открытой с веба, позволить загружать локальный контент, то она сможет легко залить на сервер любую инфу без ведома пользователя. Тебе бы понравилось, если бы у тебя веб-сайт украл все пароли?
Украсть пароли с функциональностью языка Javascript можно разве что если их хранят в текстовом файле с именем "маи пароли.txt" на рабочем столе...
2Yan: Не могу понять логики твоих постов... То ты говоришь что это невозможно потому что безопасность, то приводишь скрипт, который должен доказывать обратное...
ЗЫ По-поводу http://xsms.nm.ru/temp/ie/local_images_detecting/. Всеми моими браузерами как с локала, так и с сайта он сказал, что нет у меня ничего из этого софта, даже опры, которой я щас пишу.
setAttribute("src", "file://"+document.getElementById("pict").value+"");
Спасибо за мысль, такой код работает:
function pict_onpropertychange(){ var fName if (document.all) fName=document.getElementById("pict").value; else{ fName=String(document.getElementById("pict").value).replace(/\\/g, "/"); fName="file:///"+fName; } document.getElementById("pict_prev").setAttribute("src", fName); }
Но, только с локала. Ладно, буду думать дальше.
Добавлено Пнд 12 Фев 2007 12:52:13 :
Есть предположение, что может помочь установка дополнительных привелегий, в часности:
Но если с локала браузер запрашивает разрешить эти привелегии или нет, но с сервера скрипт отваливается с ошибкой:
uncaught exception: A script from "http://ХХХХХХХХХХХ" was denied UniversalFileRead privileges.
Мож есть какие настройки безопасности лисы, о каких я не знаю, что-нить типа безопасных узлов ИЕ?
Отредактировано horseman (12-02-2007 12:25:54)
Отсутствует
с сервера скрипт отваливается с ошибкой
Неподписанный, наверное, вот и отваливается.
такой код работает...Но, только с локала...
В опере и с локала не работает. horseman, зачем так изощрённо ограничивать круг потенциальных пользователей ресурса ? post-get, и будет работать везде.
ЗЫ По-поводу http://xsms.nm.ru/temp/ie/local_images_detecting/. Всеми моими браузерами как с локала, так и с сайта он сказал, что нет у меня ничего из этого софта, даже опры, которой я щас пишу.
horseman, а почему он так сказал ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Неподписанный, наверное, вот и отваливается.
А можно чуть подробнее про эту подпись...
В опере и с локала не работает. horseman, зачем так изощрённо ограничивать круг потенциальных пользователей ресурса ? post-get, и будет работать везде.
Блин, опра использует свой префикс при открытии имаджей file://localhost ...
Возможно я дейстительно ставлю заплатки на заплатки, но раньше оно так работало, а начать обьяснять опять юзверям, шо теперь вы должны нажать сначала сюда, увидеть сюда и т.п.- это лишний раз не хоцца. Лучше шоб изменения проходили в бекгранде от них. Ну, если в ближайшее время не найду решения- так и поступлю.
horseman, а почему он так сказал ?
ХЗ это уж к автору скрипта. Я особо не вникал.
Отсутствует
horseman
2Yan: Не могу понять логики твоих постов... То ты говоришь что это невозможно потому что безопасность, то приводишь скрипт, который должен доказывать обратное...
Логика проста.
Я знал, что в Firefox и Опера из соображений безопасности web-страницы не имеют права загружать локальные картинки, и по ошибке распространил то же правило на IE.
Когда же выяснилось, что IE, по крайней мере шестой, всё таки это позволяет, написал скрипт, показывающий потенциальную опасность загрузки локальных картинок.
ЗЫ По-поводу http://xsms.nm.ru/temp/ie/local_images_detecting/. Всеми моими браузерами как с локала, так и с сайта он сказал, что нет у меня ничего из этого софта, даже опры, которой я щас пишу.
Смысл скрипта:
- загрузить локальную картинку, например, file:///C:/Program Files/Opera/styles/images/opera.png;
- если размеры картинки больше нуля, значит, у пользователя по этому адресу находится данная картинка, следовательно можно сделать вывод, что установлена Опера;
Браузер делиться такой информацией не должен.
Отсутствует
чуть подробнее про эту подпись...
там. Хотя, это было лишь предположение.
начать обьяснять опять юзверям, шо теперь вы должны нажать сначала сюда, увидеть сюда
Мож есть какие настройки безопасности лисы
И в чём будет разница ?
ХЗ это уж к автору скрипта. Я особо не вникал.
Жаль, предположение оправдалось. Иными словами,
...буду думать...
момент ещё не настал ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1