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

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

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

Ответы [ 6 ]

3 голосов
/ 03 марта 2009

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

3 голосов
/ 03 марта 2009

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

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

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

1 голос
/ 19 октября 2010

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

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

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

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

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

1 голос
/ 03 марта 2009

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

getimage.php? ID = 8783475

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

1 голос
/ 03 марта 2009

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

0 голосов
/ 03 марта 2009

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

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

...