Foros del Web » Programando para Internet » PHP »

Seguridad con las imagenes.

Estas en el tema de Seguridad con las imagenes. en el foro de PHP en Foros del Web. Hola a todos, en mi pagina tengo colgadas varias fotos que se muestran si introduces correctamente una contraseña. Es decir: (1) PIDO CONTRASEÑA -CONTRASEÑA CORRRECTA ...
  #1 (permalink)  
Antiguo 22/12/2009, 17:55
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Seguridad con las imagenes.

Hola a todos, en mi pagina tengo colgadas varias fotos que se muestran si introduces correctamente una contraseña.
Es decir:

(1) PIDO CONTRASEÑA
-CONTRASEÑA CORRRECTA
MUESTRO: www.midominio.com/imagenuno.jpg
MUESTRO: www.midominio.com/imagendos.jpg
-CONTRASEÑA INCORRECTA
PIDO CONTRASEÑA (1)

Bueno, claro ¿no?. Pero con todo esto si la gente escribe en el navegador www.midominio.com/imagenuno.jpg la gente puede ver las imagenes sin necesitar entrar en la pagina donde pide la contraseña.
¿Como puedo proteger estas imagenes?

Muchas gracias y ¡¡FELIZ NAVIDAD!!
  #2 (permalink)  
Antiguo 22/12/2009, 18:24
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Seguridad con las imagenes.

Lo que se me ocurre ahora, es poner las imagenes en un directorio oculto por htaccess, es decir que las imagenes quedan inaccesibles, si el password es correcto, seteas el header a image/jpeg por ejemplo y haces un echo del file_get_contents de la imagen =)

Saludos
  #3 (permalink)  
Antiguo 22/12/2009, 19:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Seguridad con las imagenes.

Gracias, pero me lo podrias explicar detenidamente. No tengo conocimientos de htaccess, y en php estoy medio-medio.
  #4 (permalink)  
Antiguo 22/12/2009, 19:02
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Seguridad con las imagenes.

Si nadie pasa antes por aca mañana te pongo un ejemplo =)

Saludos!
  #5 (permalink)  
Antiguo 22/12/2009, 19:07
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Seguridad con las imagenes.

Muchiiisimas gracias rodrigo y ¡FELIZ NAVIDAD!
  #6 (permalink)  
Antiguo 23/12/2009, 03:25
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 5 meses
Puntos: 30
Respuesta: Seguridad con las imagenes.

asi de rapido se me ocurre poner las imagenes en una base de datos, y eso solucionaria todo, desde usar session para ver si el usuario paso por la pagina de la contraseña, y tanto si tiene permiso para ver la imagen
__________________
...
  #7 (permalink)  
Antiguo 23/12/2009, 09:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Seguridad con las imagenes.

¿Y como meto una img en un BD?
Pero aun asi, me gusta mas la propuesta de rodrigo.
Graciiias,
  #8 (permalink)  
Antiguo 23/12/2009, 13:22
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Seguridad con las imagenes.

Lo prometido es deuda :P

Es un ejemplo simple pero lo importante es que entiendas como funciona

Tengo esta estructura de directorios

/img
/public

Public es el root directory, es decir que es lo que pueden ver los usuarios de nuestro sitio, img no esta a su alcance

el htacces es algo asi

Código PHP:
RewriteEngine On
RewriteCond 
%{REQUEST_FILENAME} -[OR]
RewriteCond %{REQUEST_FILENAME} -[OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule 
^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L
El script php es

Código PHP:
// si entro a http://misitio.com/imagen.jpg, $uri sera /imagen.jpg
$uri $_SERVER["REQUEST_URI"];

// si hay algun parametro pasado por GET lo eliminamos
if (strpos($uri"?") !== false) {
    
$uri substr($uri0strpos($uri"?"));
}

$rutaImagen "../img".$img;

/* en este ejemplo el filtro para poder ver o no una imagen consiste en pasar este parametro por GET, en tu caso debes poner que este logueado o no */

$estaLogueado $_GET["logueado"] == 1;

if(
$estaLogueado) {
  if (
file_exists($rutaImagen)) {
    
/* lo mas "importante", a lo que le tienes que prestar atencion es a las proximas 2 lineas, el resto lo puedes implementar de mil formas diferentes */
    
Header("Content-type: image/jpeg");
    echo 
file_get_contents($rutaImagen);
    die();
  } else {
    die(
"La imagen que buscas no existe");
  }
} else {
    die(
"No estas logueado, no tienes acceso a las imagenes privadas");

y esto es todo =)

cualquier cosa que no entiendas aqui estamos :P

Saludos!
  #9 (permalink)  
Antiguo 23/12/2009, 16:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Seguridad con las imagenes.

Oh rodrigo, muchiiisimas gracias.
El script php seria "index.php", no?
Lo unico que no entiendo es el htacces pero esq nunca e visto nada acerca eso. Investigare.

Muchas gracias,
  #10 (permalink)  
Antiguo 23/12/2009, 16:56
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Seguridad con las imagenes.

si, en ese caso el script seria index.php

el htaccess lo unico que hace es redirigir tooodo el contenido a index.php, pongas la url que pongas, siempre sera procesada por el index

podrias hacerlo sin htaccess pasando el nombre de la imagen por GET

misitio.com/images.php?img=hola.jpg

pero lo importante sigue siendo que las imagenes esten en un directorio inaccesible para el usuario =)
  #11 (permalink)  
Antiguo 25/12/2009, 14:03
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Seguridad con las imagenes.

Pro coneste metodo si alguien escribe en vez de www.midominio.es/index.php
escribe www.midominio.es/contacto.php sera redirigido a index.php siempre :/
  #12 (permalink)  
Antiguo 26/12/2009, 07:04
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Seguridad con las imagenes.

claro, igualmente en el htaccess podes poner excepciones, aunque lo mejor seria crear una subcarpeta como por ej misitio.com/private/imagen.jpg, y pones el htaccess dentro de /private
  #13 (permalink)  
Antiguo 27/12/2009, 09:08
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Seguridad con las imagenes.

ahh ok ok
muchs gracias
  #14 (permalink)  
Antiguo 27/12/2009, 09:25
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Seguridad con las imagenes.

También puedes evitar que accedan a tus imagenes desde el exterior con un sistema de prevención del hotlinking , de ese modo cada vez que quieran acceder a tus imagenes les saldra suponete una foto de un payaso en vez de la imagen que quieren acceder , en cambio accediendo con la contraseña podrán ver la imagen ya que el mismo servidor esta accediendo a la imagen y no un servidor tercero (hotlinking).

Saludos
  #15 (permalink)  
Antiguo 27/12/2009, 09:57
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Seguridad con las imagenes.

Si sabes ingles te puede venir bien este ejemplo

http://safalra.com/programming/php/prevent-hotlinking/

Es para hacer un sistema de hotlink con php, pero modificandolo un poco puede servirte para lo que quieres


Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.