Restringir el acceso a las imágenes en un sitio web

Estoy armando un sitio web de cartera que incluye varias imágenes, algunas de las cuales no quiero que el público en general pueda ver. Me imagino que le enviaré a alguien el nombre de usuario y la contraseña, con los que pueden “iniciar sesión” para ver mi trabajo.

He visto varias soluciones para el problema de “ocultar una imagen” en línea, incluida la siguiente, que utiliza el archivo de lectura de php. También he visto otro que usa .htaccess.

Use php’s readfile () o redireccione para visualizar un archivo de imagen?

No me entusiasma la solución readfile, ya que parece que es lento cargar las imágenes, y me gustaría poder utilizar FancyZoom de Cabel Sasser, que necesita acceso sin restricciones a la imagen (su biblioteca quiere un enlace completo). tamaño de la imagen), por lo que descarta .htaccess.

Para recapitular lo que estoy tratando de hacer:

1) Proporcionar un sitio donde ofrezca a los usuarios la posibilidad de autenticarse como alguien a quien me gustaría mirar mis imágenes. 2) Restringir a los usuarios web aleatorios que no puedan ver esas imágenes. 3) Use FancyZoom para hacer estallar miniaturas.

No me importa a qué tecnología esto termine usando, Javascript, PHP, etc., lo que sea más limpio y fácil.

Por cierto, soy un desarrollador de Java, no un desarrollador web, por lo que probablemente no estoy pensando en el problema correctamente.

En lugar de proporcionar un enlace a una imagen. Proporcione un enlace a una secuencia de comandos cgi que proporcionará automáticamente el encabezado y el contenido adecuados de la imagen.

Por ejemplo: image.php? Sample.jpg

A continuación, puede asegurarse de que ya están autenticados (por ejemplo, pasar una identificación de sesión) como parte del enlace.

Esto sería parte del encabezado, y luego sus datos de imagen pueden seguir.

header('Content-Type: image/jpeg'); 

Editar: si tiene que ser rápido, puede escribir esto en C / C ++ en lugar de php.

El uso de .htaccess debe ser el método más seguro / simple , ya que está integrado en la funcionalidad del servidor web.

No sé si se ajusta a sus necesidades, pero resolví un problema similar (dando imágenes a un grupo restringido de personas) mediante el uso de TinyWebGallery , que es una pequeña aplicación de galería sin base de datos.

Puede permitir el acceso a diferentes directorios a través de la contraseña y puede cargar imágenes directamente en el sistema de archivos, ya que TinyWebGallery comprobará nuevos directorios / fotos sobre la marcha. Generará miniaturas y ofrecerá a los usuarios la posibilidad de calificar / comentar imágenes (puede desactivar esto).

Esta no es la herramienta más pequeña, sin embargo creo que es mucho más fácil de configurar que el uso de las directivas apache y se ve mejor que las imágenes desnudas .

Si está usando Nginx , puede usar el módulo Secure Link .