Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как скрыть url (https://javascript.ru/forum/events/22905-kak-skryt-url.html)

MadGest 04.11.2011 23:28

Как скрыть url
 
Собственно задача в том что бы пользователь не смог узнать url изображения. Возможно ли это реализовать средствами JS?

MadGest 05.11.2011 17:05

Задача стоит такая, требуется решение. Тема открыта.

Почемучкин 05.11.2011 18:35

Можно url создавать динамически, чтобы он был действительным в течение минуты или часа. Это если нужно, чтобы нельзя было потом к нему обращаться.
Или стоит задача скрыть сервер на котором хранится изображение?

trikadin 05.11.2011 23:04

Задача в том, чтобы пользователь не смог скачать изображение?

MadGest 06.11.2011 00:54

Задача только в сокрытии url. Пока нашел адекватное решение реализовать только на стороне сервера. Интересно можно ли сделать это средствами браузера и JS?

trikadin 06.11.2011 01:02

Извините, а вы можете пояснить, что вы понимаете под "сокрытием url"? Вам нужно, чтобы в аттрибуте src не было видно url'а, по которому доступна эта картинка? И для чего вам это нужно?

zebra 06.11.2011 01:25

повесьте событие oncontextmenu и делов

MadGest 06.11.2011 02:01

Да именно сокрытие атрибута src. Суть в том что есть архив из которого грузятся фото. В зависимости от разграничения прав должны фильтроваться позиции. Одном словом что бы пользователь знал имя файла но не где он лежит. Хотелось бы усложнить получение url корневой папки.

Gvozd 06.11.2011 02:09

Ну, так вы ничего не добьетесь.
максимум вы можете чуть замедлить пользователя, и вместо одного клика ему придется сделать чуточку больше телодвижений. но через 2 минуты у него все равно будет URL файла

Правильным решением будет не скрывать URL-ы, а правильно отображать контент по ним.
Если пользователь1 имеет право увидеть картинку по ссылке http://site.ru/images/1.jpg, то показываем ему эту картинку.
А если пользователь2 не имеет прав для просмотра этой картинки, то по этой же ссылке он не должен увидеть оригинальную картинку.
Это правильное решение, которое надо использовать в данной ситуации

Почемучкин 06.11.2011 14:04

Значит сокрыть корневую папку полностью можно только со стороны сервера - например заменяя временную псевдо-ссылку на реальную ссылку (нагрузка на базу данных) или расшифровывая зашифрованную псевдо-ссылку. А затем отдавая картинку.

Если будут применяться другие методы - на стороне пользователя, то обязательно найдется тот, кто взломает эту легкую защиту. Достаточно просто поставить сниффер или файерволл заставить спрашивать можно ли обратиться туда-то за тем-то: даже не понадобится расшифровывать джаваскрипт или flash. Ссылки с которых берутся изображения сразу будут видны. То есть вопрос в том насколько прочная защита нужна. На сервере это проще, быстрее и надежнее сделать. Только чуть возрастет нагрузка.

А вот защитить изображения от копирования невозможно - даже чайник может нажать клавишу PrtScr и получить скриншот, с которого вырезать эту картинку (правда, не все почему-то догадываются так сделать - но это временное помутнение мозгов - если очень нужно, то догадаются 100%). А есть специальные утилиты для облегчения копирования и плагины для браузеров, которые всю страницу даже с прокруткой скриншотят.

trikadin 06.11.2011 15:26

Цитата:

Сообщение от Почемучкин
даже чайник может нажать клавишу PrtScr и получить скриншот

Ну, это всё же крайние меры - скриншот картинки 100% будет уступать ей в качестве. Плюс, не будут сохранены прозрачность png, анимация gif'ов и т.д.

Почемучкин 06.11.2011 17:38

Скриншот идентичен картинке до бита. Если сохранить его в PNG или BMP или TIFF. Анимация и прозрачность конечно не сохранятся, но можно вручную добавить прозрачность, а анимацию снять с помощью специальных грабберов, снимающих видео (делают много скриншотов подряд, и из них видео или набор файлов) - но это уже труднее и нужно знать инструменты.
Или еще проще - в некоторых браузерах (например FireFox) можно посмотреть информацию о странице - и там найти нужное изображение и сохранить на диск без каких-либо изменений или особых трудностей.

trikadin 06.11.2011 17:47

Цитата:

Сообщение от Почемучкин
а анимацию снять с помощью специальных грабберов, снимающих видео

Мёсье знает толк в извращениях...

Это крайний метод. Достать картинку, не прибегая к таким ухищрениям, вполне реально.

Gozar 06.11.2011 21:56

Обсуждение бессмысленно. Скрыть урл нельзя! Это невозможно, эта идея бессмысленна. Если браузер может показать картинку, то он уже знает её урл. Спросить браузер про урл картинки секундное дело. И абсолютно неважно грузите вы картинку или её base64 эквивалент.

И не нужны тут извращения с грабберами скриншотов.

Защитить от скачки невозможно давая скачивать, только паролем!

Почемучкин 07.11.2011 16:52

Gozar
Как это нельзя - а временный динамический УРЛ? Серверу совсем не обязательно говорить в каком каталоге лежит картинка - он ее может отдавать и по ссылке типа
http://domain.com/?86734921768
где число - временное.

Про пароль тоже верно. Хорошая идея. Например, можно для каждой странички давать временный пароль, который будет применяться ко всему ее контенту скажем на 3 минуты. Ну что-то в этом роде...

Да, и кстати - про base64 тоже интересно - ведь можно встраивать картинку в страницу. Можно прямо в html, а можно отдавать mhtml (где всё хранится в виде mime-аттачей).

trikadin 07.11.2011 17:18

Почемучкин, и к чему эта тирада? Скачать-то её всё равно можно будет.

Gozar 07.11.2011 17:35

Цитата:

Сообщение от trikadin (Сообщение 135021)
Скачать-то её всё равно можно будет.

Когда она уже будет на клиенте, её даже качать не нужно, она уже будет скачана.

Цитата:

Сообщение от Почемучкин (Сообщение 135020)
временный динамический УРЛ? Серверу совсем не обязательно говорить в каком каталоге лежит картинка - он ее может отдавать и по ссылке типа
http://domain.com/?86734921768

Какое клиенту дело где оно у тебя там на сервере, ему это вообще до лампочки. Твой сервер отдаст картинку где бы она не лежала, т.к. ты не понял главного, ты её по твоему же определению собираешься отдавать. Это не защита а пародия с геморроем только для тебя лично. И пусть у тебя там не просто временное число, а хэш из md5 и sha1 и рандомной солью с плавающим алгоритмом из рандомной строки и генерится это в зависимости от времени в Зимбабве.

Цитата:

Сообщение от Почемучкин (Сообщение 135020)
Про пароль тоже верно. Хорошая идея.

Плохая идея. Хоть двадцать паролей и пусть не на страницу а на каждую фото на странице персональный.

Цитата:

Сообщение от Почемучкин (Сообщение 135020)
Да, и кстати - про base64 тоже интересно - ведь можно встраивать картинку в страницу. Можно прямо в html, а можно отдавать mhtml (где всё хранится в виде mime-аттачей).

Я тебе привел пример, чтобы ты на грабли не наступил, а ты первым делом ломанулся наступать на них.

base64 программно декодируется с той же лёгкостью с какой и кодируется.

trikadin 07.11.2011 17:45

Цитата:

Сообщение от Gozar
Я тебе привел пример, чтобы ты на грабли не наступил, а ты первым делом ломанулся наступать на них.

Вспомнилось... "Ламеp - юзеp, pегуляpно наступающий на гpабли, но по-пpежнему увеpенный что гpаблей не существует."

Цитата:

Сообщение от Gozar
Когда она уже будет на клиенте, её даже качать не нужно, она уже будет скачана.

Ок, сохранить на жёсткий диск в нужном тебе месте)

Почемучкин 08.11.2011 23:15

Поставленная задача - спрятать адрес по которому лежит картинка, вернее урл. А про то как можно скопировать уже загруженную браузером картинку я и сам уже выше писал. Gozar, за чтение тредов тебе 2 балла.

trikadin: "ламер" - это воинствующий "вечный чайник". а тот кто на грабли наступает много раз - это другое...

trikadin 08.11.2011 23:41

А тебе двойка за умение объясняться. Три страницы тема, а люди так и не поняли, что тебе нужно.

Цитата:

Сообщение от Почемучкин
trikadin: "ламер" - это воинствующий "вечный чайник". а тот кто на грабли наступает много раз - это другое...

И почему же вы так решили? Боюсь, у вас неправильное понимание данного термина.

Gvozd 09.11.2011 00:23

Цитата:

Сообщение от trikadin
Три страницы тема, а люди так и не поняли, что тебе нужно.

Я вроде понял.
Пользователю, в зависимости от его прав показываются например такие картинки:
http://site.ru/files/0001.jpg
http://site.ru/files/0007.jpg
Увидев URL, легко открыть картинку http://site.ru/files/0002.jpg напрямую, даже если нету прав на ее просмотр.
Вот от этого ТС и хочет защитится

trikadin 09.11.2011 00:32

Ну тогда хеши, случайные числа и т.д. Сервер сайд, короче)

Или отдавать base64. Тогда пользователь вообще ничего не узнает...

Почемучкин 09.11.2011 14:22

trikadin
Цитата:

Три страницы тема, а люди так и не поняли, что тебе нужно.
Мне нужно? Еще один читатель-профессионал? ;-)

trikadin 09.11.2011 14:32

Цитата:

Сообщение от Почемучкин
Мне нужно? Еще один читатель-профессионал? ;-)

И правда) Забавно...

Gozar 09.11.2011 16:05

Цитата:

Сообщение от Почемучкин (Сообщение 135320)
Поставленная задача - спрятать адрес по которому лежит картинка, вернее урл. А про то как можно скопировать уже загруженную браузером картинку я и сам уже выше писал. Gozar, за чтение тредов тебе 2 балла.

Ты читаешь только то, что хочешь.
Ну правду говорят, будешь спорить с дурачком, он тебя опытом задавит.

По определению задачи спрятать урл на стороне клиента так чтобы его нельзя было узнать нельзя! - читать как мантру, до осознания.
или можешь читать расшифровку, тоже как мантру - Нельзя спрятать урл, потому что тогда браузер не загрузит картинку!

Почемучкин 13.11.2011 20:39

Gozar,
Какая самокритика... ;)

Цитирую автора треда: "задача в том что бы пользователь не смог узнать url изображения"

Насчет "Нельзя спрятать урл, потому что тогда браузер не загрузит картинку!" - учи html. Можно встроить картинку в сам код страницы, и об этом уже несколько сообщений здесь было.

Gozar 14.11.2011 13:20

Цитата:

Сообщение от Почемучкин (Сообщение 136223)
Насчет "Нельзя спрятать урл, потому что тогда браузер не загрузит картинку!" - учи html. Можно встроить картинку в сам код страницы

Приведи рабочий пример как встроить картинку в код страницы чтобы у неё не было url? Иначе ты очередной тролль, не понимающий о чём идет разговор и вообще плохо разбирающийся в теме.

e1f 14.11.2011 19:29

Понафлудили... Отдача картинок не напрямую, а через серверный скрипт, с проверкой прав, если нужны красивые урлы -- mod_rewrite в помощь.

Gozar 14.11.2011 19:41

e1f,
Это ещё Gvozd предложил.
Тут другое, человек рогами упирается про url на клиенте.


Часовой пояс GMT +3, время: 05:44.