Как вы можете предотвратить прямой просмотр изображения в веб-каталоге?

StackOverflow https://stackoverflow.com/questions/608111

  •  03-07-2019
  •  | 
  •  

Вопрос

Я создаю сайт галереи изображений, для доступа к которому вам нужно войти в систему.Сайт будет использовать сеансы для отслеживания имен пользователей и паролей.Вошедшие в систему пользователи смогут выполнять поиск изображений и видеть результаты.Предположительно, это означает, что я буду размещать изображения в веб-каталоге.Как мне сделать так, чтобы люди, не вошедшие в систему, не могли напрямую переходить к изображению в этом каталоге?

Это основано на PHP, с MySQL.

Это было полезно?

Решение

Проверьте наличие заголовка referrer и потребуйте, чтобы он был с вашего сайта.Вы также можете проверить, отправляются ли вам файлы cookie (что они вошли в систему).

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

Кроме того, ознакомьтесь со строкой комментария:используя mod_rewrite, вы можете сделать все это непосредственно из apache.

Другие советы

Поместите изображения в папку, доступ к которой недоступен по прямому URL, и попросите программу отправить изображение напрямую

Не помещайте изображения в каталог, доступный для просмотра.А еще лучше, храните их за пределами вашего webroot.Установите какой-нибудь пользовательский обработчик, который загрузит запрошенное изображение и отправит его обратно пользователю после того, как пользователь будет проверен.Это также предотвратит "горячую" привязку ваших изображений.

Поместите изображения в папку за пределами веб-сайта и используйте прокси-страницу для отправки изображения в браузер.Создайте страницу, которую вы используете в качестве URL-адреса в своем теге img, что-то вроде:

getimage.php?id=8783475

На странице вы проверяете, что пользователь вошел в систему, и определяете по параметрам, какое изображение отправить.Установите тип содержимого страницы таким, который соответствует изображению, например "image /jpeg", считайте файл изображения и отправляйте непосредственно в поток ответов.

Если ваши изображения не слишком велики, существует очень разумный способ защитить их от несанкционированного доступа.Вы можете использовать кодировку base64, такую же, как кодировка вложений Outlook Express, и поместить код внутрь страницы ASP, которая использует объект SESSION.ПОДРОБНЕЕ ОБ ЭТОМ ЧИТАЙТЕ В РУКОВОДСТВАХ ПО ASP.Когда пользователь получает доступ к странице, asp-код проверяет, прошел ли пользователь проверку подлинности.Если это не так, скрипт прерывает работу с кодом страницы, не визуализируя изображение.Если пользователь аутентифицирован, скрипты загружают всю страницу целиком, и base64 реконструируется в видимое изображение.Хитрость здесь в том, что у вас нет каталога с обычными изображениями в нем, но изображение закодировано в html страницы, поэтому оно восстанавливается на лету скриптом.Поскольку у вас нет изображений в каталоге, никто не может попытаться указать браузеру непосредственно на них, поскольку их просто не существует.Вы можете использовать этот сайт для кодирования изображений:

http://www.motobit.com/util/base64-decoder-encoder.asp

Затем вы должны "вызвать" изображение в html-коде, используя этот тег:

img src="данные: изображение / gif;base64, ..............................................( здесь вы размещаете код, полученный с сайта выше)...............

С тобой покончено!Ваши изображения будут недоступны, если пользователь не войдет в систему.

Не позволяйте людям напрямую обращаться к вашим каталогам изображений.

Позвольте вашему программному обеспечению для создания галереи изображений переслать изображение пользователю.Проверьте необходимые учетные данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top