Ограничение доступа к изображениям на сайте
Вопрос
Я собираю веб-сайт портфолио, который включает в себя несколько изображений, некоторые из которых я не хочу видеть широкой публике. Я предполагаю, что я напишу кому-нибудь по электронной почте имя пользователя и пароль, с помощью которых они могут "войти в систему". посмотреть мою работу.
Я видел различные решения для " скрыть изображение " проблема на линии, включая следующую, которая использует PHP-файл чтения. Я также видел другой, который использует .htaccess.
Используйте php readfile () или перенаправьте для отображения файл изображения?
Я не в восторге от решения для чтения файлов, поскольку загрузка изображений кажется медленной, и я хотел бы иметь возможность использовать FancyZoom от Cabel Sasser, который требует беспрепятственного доступа к изображению (его библиотека хочет ссылку к полноразмерному изображению), чтобы исключить .htaccess.
Напомним, что я пытаюсь сделать:
1) Предоставьте сайт, где я даю пользователям возможность идентифицировать себя как кого-то, кого я хотел бы посмотреть на мои изображения. 2) Ограничить случайным пользователям сети возможность видеть эти изображения. 3) Используйте FancyZoom, чтобы взорвать миниатюры.
Мне все равно, какую технологию это использует - Javascript, PHP и т. д. - что бы ни было самым чистым и простым.
Кстати, я Java-разработчик, а не веб-разработчик, поэтому, вероятно, я не думаю о проблеме правильно.
Решение
Вместо предоставления ссылки на изображение. Предоставьте ссылку на скрипт cgi, который автоматически предоставит правильный заголовок и содержимое изображения.
Например: image.php? sample.jpg
Затем вы можете убедиться, что они уже аутентифицированы (например, передают идентификатор сеанса) как часть ссылки.
Это будет часть заголовка, и тогда ваши данные изображения могут последовать.
header('Content-Type: image/jpeg');
Изменить: если это должно быть быстро, вы можете написать это на C / C ++ вместо php.
Другие советы
Использование .htaccess должно быть методом safest / simplest , поскольку он встроен в функциональность самого веб-сервера.
Я не знаю, соответствует ли он вашим потребностям, но я решил аналогичную проблему (предоставление фотографий ограниченной группе людей) с помощью TinyWebGallery , представляющее собой приложение небольшой галереи без базы данных . Р>
Вы можете разрешить доступ к различным каталогам по паролю и загружать изображения непосредственно в файловую систему, так как TinyWebGallery будет проверять наличие новых папок / фотографий на лету. Он генерирует миниатюры и дает пользователям возможность оценивать / комментировать фотографии (Вы можете отключить это).
Это не самый маленький инструмент, однако мне кажется, что его гораздо проще настроить, чем с помощью директив apache, и он выглядит лучше, как голые изображения .
Если вы используете Nginx , вы можете использовать Модуль защищенной связи .