Google
Web dns.bdat.net

Re: [PHP-ES] Es posible Impedir Acceso a Imagenes directamente por URL...

From: Juan Fernando (juanff(EN)epm.net.co)
Date: Tue Oct 19 2004 - 15:18:50 CEST


hola a todos

Yo hace poco lo arregle combinandolo con flash.

Puede ser un poco complejo pero con eso te evitas que te copien las imagenes

Creas una pelicula y con action script le pasas el nombre de la imagen y su
ruta. Nadie lo ve y no se sabe desde donde se cargan las imagenes

Aunque las otras soluciones son muy buenas tambien

no se que opinan el resto de los compañeros de esta lista

----- Original Message -----
From: "Vladimir Hernandez" <vladimir(EN)inter-connect.us>
To: <php-es(EN)lists.php.net>
Sent: Tuesday, October 19, 2004 8:11 AM
Subject: Re: [PHP-ES] Es posible Impedir Acceso a Imagenes directamente por
URL...

Otra opción que se me ocurre es elaborar una función en PHP que lea los
archivos desde un directorio en tu disco duro que no es accesible vía Web,
ya
sea porque está protegido a través del software de tu servidor, o
simplemente
porque no se encuentra dentro de tu sección de acceso público .

Un ejemplo sería el siguiente:

Supocisiones:
- Plataforma Linux (sólo haz los ajustes necesarios en caso de Windows)
- El directorio que contiene tu website es "/www".
- El directorio /home/images no tiene acceso desde la Web.
- La variable "$_SESSION['verificado']" sólo existe si se ha validado
previamente al usuario de tu script
- Las imágenes se encuentran listadas dentro de una base de datos de MySQL
que
tiene la tabla images con dos campos: image_id e image_file, donde el
primero
tiene un nombre críptico y no relacionado con el nombre original del
archivo,
por ejemplo "0AX55", etc. El segundo campo contiene el nombre completamente
amigable del archivo, por ejemplo "foto_de_mi_perro.jpg". El campo de
image_id es index unique.
- Tu librería GD está activada
- Un usuario aprobado necesita ver la imagen de image_id="0AX55".

Si "images.php" contiente:
<?php
if(isset($_SESSION['verificado']) # si usuario aprobado de ver imágenes
{
$db = mysql_connect("server","user","password");
mysql_select_db("database",$db); # abrir DB
$image_sql="SELECT image_file FROM images WHERE image='".$image_id."'";
$image_out=mysql_query($image_sql,$db);
$image_array=mysql_fetch_row($image_out);# recibir salida de SQL
$image_file=$image_array[0]; # modificable para más de 1 imagen
$image_file="/home/images/".$image_file; # relacionando con directorio
$image=LoadJpeg($image_file); #abriendo imagen
header("Content-type: image/jpeg"); # para q browser reconozca imagen
ImageJpeg($image,'',70);# nueva imagen a calidad 70%
ImageDestroy($image);# Eliminar imagen de memoria
}
?>

el HTML de la página que contendrá la imagen se vería algo así:
<img src="images.php?image_id=0AX55">

El script es my básico, hay que completar para manejo de errores y de
validación. El tag de IMG debe obviamente ser generado dinámicamente
también,
posiblemente de acuerdo a lo que el usuario elija en un formulario. Aunque
sólo considera imágenes jpeg, se puede ajustar a otros formatos.

La ventaja es que lee desde un directorio que no es públicamente accesible,
no
se necesita modificar el sevidor para esto, y de hecho, con algo de
paciencia
se puede lograr que despliegue la imagen de cierto tamaño, etc.

Espero te sirva

On Monday 18 October 2004 11:41 pm, Jabi wrote:
> te aconsejo que utilizes mod_rewrite de apache
>
> http://httpd.apache.org/docs/mod/mod_rewrite.html
>
> yo lo que haría sería renombrar todsa las fotos poninedo un prefijo.
> Limitaría el acceso desde navegador a archivos en ese directorio con ese
> prefijo especial.
> y construiría un php que fuera invocado por el mod_rewrite, que se
> encargará de leer y volcar la imagen que se esté solicitando, prevía
> comprobación por ejemplo de que exista una variable de sesión.
>
> espero mas o menos haberte dado una idea...
>
> Un saludo
>
> Jabi
>
> El mar, 19-10-2004 a las 08:22, pp.garrido(EN)tiscali.es escribió:
> > Muy buenas, gente, estos son de los mejores foros q he visto... a ver si
> > me podeis orientar....
> >
> > Ahora se me plantea un "problemilla" para mi, quizas para vosotros no...
> >
> > TEngo una web, en un subdirectorio tengo imagenes enumeradas de cierta
> > forma que son enganchadas desde mis paginas web. El directorio lo tengo
> > pa q no se pueda listar y ver el contenido...
> >
> > Mi problema es:
> > Si hay alguna forma de hacer, que no se pueda acceder
> > directamente a esas mis imagenes?
> > imaginemos q por cualquier "casualidad" alguien averigua la forma en que
> > codifico los nombres de mis imagenes, esto implicaria que podria recoger
> > todas esas imagenes mediante
> > http://www.miweb.es/imagenes/img2342524322.jpg variando el nombre.
> > Basicamente La cosa es no poder hacer referencias directas desde un
> > navegador a imagenes en mi directorio,
> >
> > ¿es posible?
> > Gracias....
> >
> > Envíanos tus fotos digitales.
> > Te las revelamos en papel de máxima calidad y te las llevamos a la
puerta
> > de casa.
> > ¡Verás qué cómodo!
> >
> > http://foto.tiscali.es
> >
> > Envíanos tus fotos digitales.
> > Te las revelamos en papel de máxima calidad y te las llevamos a la
puerta
> > de casa.
> > ¡Verás qué cómodo!
> >
> > http://foto.tiscali.es

--
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


This archive was generated by hypermail 2.1.7 : Fri Nov 12 2004 - 20:21:31 CET