Foros del Web » Programando para Internet » PHP »

Proteger archivos PDF en el servidor mediante cookie

Estas en el tema de Proteger archivos PDF en el servidor mediante cookie en el foro de PHP en Foros del Web. Tengo un problema a la hora de proteger unos documentos... Hago un autentificación con una cookie. En una página protegida muestro datos de archivos que ...
  #1 (permalink)  
Antiguo 17/07/2005, 12:50
Avatar de leopardix
(Desactivado)
 
Fecha de Ingreso: diciembre-2003
Mensajes: 91
Antigüedad: 14 años
Puntos: 0
Pregunta Proteger archivos PDF en el servidor mediante cookie

Tengo un problema a la hora de proteger unos documentos... Hago un autentificación con una cookie. En una página protegida muestro datos de archivos que est´n en el mismo folder.
Las páginas consisten en tablas que muestran el código de un documento, la
fecha, una descripción de lo que contiene y un enlace para que se te abra en otra ventana. Esos documentos están en PDF.

Cuando se llama a una página PHP cualquiera y ésta no encuentra la cookie de
autentificación, automáticamente te redirige al "Autentificador.PHP", pero si en la barra de direcciones del navegador se escribe la ruta absoluta de un documento PDF, este evidentemente se abre sin tener en cuenta ningún tipo de cookie, con lo que la seguridad que se tiene sobre estos es más bien escasa. También sospecho que con una de estas herramientas de descarga de sitios web completos, tal como está montado el servidor se descargarían todo.

Alguna Idea...
  #2 (permalink)  
Antiguo 22/07/2005, 03:08
Avatar de leopardix
(Desactivado)
 
Fecha de Ingreso: diciembre-2003
Mensajes: 91
Antigüedad: 14 años
Puntos: 0
Ayuda por favor...

Agradecería si alguien me da una mano con esto... se puede proteger el acceso a un Archivo PDF puesto en el servidor....

Gracias...
  #3 (permalink)  
Antiguo 22/07/2005, 07:24
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 12 años, 8 meses
Puntos: 0
En el index tienes algo así:

Código HTML:
<A HREF="download.php?file=000184">ejemplo 1.pdf</A>
<A HREF="download.php?file=000312">ejemplo 2.mp3</A> 
y en 'download.php' este pseudo código:

Código PHP:
    Autentifica y blah blah blah...
    
    if( 
$hay_cookie_autentificada ) {
        
$filename_real  "";
        
$filename_en_disco "";
        if( isset(
$_GET['file']) ) {
            
$file_ID $_GET['file'];
            if( 
$file_ID != '' ) {
                switch ( 
$file_ID ) {
                    case 
000184:
                        
$filename_real  "ejemplo 1.pdf";
                        
$filename_en_disco "xxxABCDEF_184";  // arbitrario
                        
break;
                    case 
000312:
                        
$filename_real  "ejemplo 2.mp3";
                        
$filename_en_disco "xxxABCDEF_312";  // arbitrario
                        
break;
                    default:
                        break;
                }
            }
        }
        if( 
$filename_real != "" AND $filename_en_disco != "" ) {
            if( !
file_exists($filename_en_disco) ) {
                
$filename_en_disco "";
            }
        }
        if( 
$filename_real != "" AND $filename_en_disco != "" ) {
            
            
$filetime filectime($filename_en_disco);
            
$filesize filesize($filename_en_disco);
            
$fp fopen$filename_en_disco"rb" );
            
$filedata fread($fp$filesize);
            
fclose($fp);
        
            
header("Cache-control: max-age=31536000");
            
header("Expires: " gmdate("D, d M Y H:i:s",time()+31536000) . " GMT");
            
header("Last-Modified: " gmdate("D, d M Y H:i:s",$filetime) . " GMT");
            
header("Content-disposition: inline; filename=$filename_real");
            
header("Content-Length: $filesize");
            
$extension=strtolower(substr(strrchr($filename_real,"."),1));
    
            if (
$extension=='gif') {
              
header('Content-type: image/gif');
            } elseif (
$extension=='jpg' or $extension=='jpeg') {
              
header('Content-type: image/jpeg');
            } elseif (
$extension=='png') {
              
header('Content-type: image/png');
            } elseif (
$extension=='pdf') {
              
header('Content-type: application/pdf');
            } elseif (
$extension=='mp3') {
              
header('Content-type: audio/mpeg');
            } else {
              
header('Content-type: unknown/unknown');
            }
            echo 
$filedata;        //  envía el file
        
}
        else {
            
El 'file_ID'está vacío o es inválido
        
}
        
    }
    else {
        
No autorizado
    

Nota que de lo que se trata es de que no sepa qué nombre tiene el file en el disco, nombre que tú conoces, obtienes (aquí con un CASE aunque puedes hacerlo con una base de datos) y es ese el file que le envías.
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 01:07.