Pregunta

Estoy creando un sitio de galería de imágenes al que tienes que iniciar sesión para acceder. El sitio utilizará sesiones para realizar un seguimiento de los nombres de usuario y las contraseñas. Los usuarios registrados podrán buscar imágenes y ver los resultados. Presumiblemente, esto significa que voy a poner imágenes en un directorio web. ¿Cómo puedo evitar que las personas que no han iniciado sesión puedan navegar directamente a una imagen en este directorio?

Esto está basado en PHP, con MySQL.

¿Fue útil?

Solución

Compruebe si hay un encabezado de referencia y solicítelo desde su sitio. También puede verificar que las cookies se le envíen (que hayan iniciado sesión).

Tu mejor apuesta es que PHP obtenga las imágenes desde una ubicación fuera de tu directorio web.

También, revisa la cadena de comentarios: usar mod_rewrite puede hacer todo esto directamente desde apache.

Otros consejos

Coloque las imágenes en una carpeta que no sea accesible a través de una URL directa, y haga que el programa sirva la imagen directamente

No pongas las imágenes en un directorio navegable. Mejor aún, guárdalos fuera de tu webroot. Coloque algún tipo de controlador personalizado que cargará la imagen solicitada y se la enviará al usuario, una vez que el usuario haya sido validado y verificado. Esto también evitará el enlace de sus imágenes.

Coloque las imágenes en una carpeta fuera del sitio web y use una página proxy para enviar la imagen al navegador. Cree una página que use como URL en su etiqueta img, algo como:

getimage.php? id = 8783475

En la página, verifica que el usuario haya iniciado sesión y determine a partir de los parámetros qué imagen enviar. Establezca el tipo de contenido de la página en el tipo que coincida con la imagen, por ejemplo, " image / jpeg " ;, lea el archivo de imagen y envíelo directamente a la secuencia de respuesta.

Si sus imágenes no son demasiado grandes, existe una manera muy inteligente de protegerlas del acceso no autorizado. Puede hacer una base de 64 segundos, al igual que la codificación de adjuntos de Outlook Express, y colocar el código dentro de una página ASP que usa el objeto SESSION. VEA LOS TUTORIALES EN ASP PARA MÁS INFORMACIÓN SOBRE ESTE TEMA. Cuando un usuario accede a la página, el código asp comprueba si el usuario está autenticado. Si no es el script, interrumpe el código de la página, no visualiza la imagen. Si se autentica al usuario, los scripts cargan la página completa y la base64 se reconstruye en una imagen visible. El truco aquí es que no tiene un directorio con imágenes simples, pero la imagen está codificada en la página html, por lo que el script la reconstruye al vuelo. Como no tiene imágenes en el directorio, nadie puede intentar apuntar el navegador directamente a ellas, ya que simplemente no existen. Puede utilizar este sitio para codificar las imágenes:

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

Luego tienes que " llamar " la imagen en el código html usando esta etiqueta:

img src = "datos: imagen / gif; base64, .................................. ............ (aquí coloca el código obtenido del sitio anterior) ...............

¡Ya terminaste! No se puede acceder a sus imágenes si el usuario no ha iniciado sesión.

No permita que las personas accedan directamente a sus directorios de imágenes.

Deje que el software de su galería de imágenes reenvíe la imagen al usuario. Compruebe las credenciales necesarias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top