PHP - Denegar acceso a archivos de un servidor mediante url

   
Vista:

Denegar acceso a archivos de un servidor mediante url

Publicado por adrian (1 intervención) el 28/10/2014 09:08:02
Hola a todos!

Me gustaría saber como puedo hacer para que los usuarios NO puedan acceder a documentos pdf que tengo en un servidor insertando directamente la url en el navegador.

Quiero que para que puedan ver estos documentos solo deban estar logeados y que dependiendo del usuario que sea no pueda verlo tampoco. Ejemplo:

Tengo en el servidor dos documentos pdf:

documento1.pdf
documento2.pdf

Y hay dos usuarios:

usuario1
usuario2

Quiero que ninguno de los dos pueda acceder al documento sin loguearse, pero si estan logueados, quiero que le usuario 1 pueda acceder a los dos documentos pdf. Sin embargo el usuario2 solo podrá acceder al documento2.pdf

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Denegar acceso a archivos de un servidor mediante url

Publicado por xve (5519 intervenciones) el 28/10/2014 11:05:06
Hola Adrian, la manera que yo realizaría, es poner los archivos en una carpeta que el usuario desconozca, y para descargar los archivos, hacerlo mediante una pagina php... algo como descargar.php?file=documento1.pdf

De esta manera, el usuario no sabe donde esta el archivo pdf, y desde el archivo php controlas si puede o no descargarlo.

Si no lo tienes muy claro, te preparo el ejemplo del archivo descargar.php...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Denegar acceso a archivos de un servidor mediante url

Publicado por Vainas (254 intervenciones) el 28/10/2014 13:04:06
Buenas. te doy mas opciones (las dos funcionan con servidores apache):

1. Bloquear el directorio con htaccess y htpasswd

.htaccess:

1
2
3
4
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
Require user

Por internet hay mucho tutoriales que te pueden explicar como va el tema. Esto se puede complementar con php para preguntar si el usuario esta logeado no. Sobre lo de que uno pueda ver un tipo de documentos y el otro no... tendras que separarlo por carpetas.

2. Redirigir las peticiones a un archivo que preguntará si el usuario esta logeado:

Es muy parecida a la opcion que nos da xve pero haciendo unas modificaciones en el .htaccess:

.htaccess:
1
2
3
RewriteCond %{REQUEST_FILENAME} !check_auth.php
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* check_auth.php?file=$0 [QSA,L] # pass everything thru php


Esto viene a decir que cualquier archivo que se pida se pase como parametro a check_auth.php?file=nombredelarchivo.extension

Luego en el check_auth.php:
1
2
3
4
5
6
7
$file = $_GET['file'];
if($_SESSION['user_authenticated']) {
    // please mind you need to add extra security checks here (see comments below)
    readfile($file); // if it's php include it. you may need to extend this code
}else{
   // bad auth error
}

Espero que sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar