Proteger descargas con PHP

En ocasiones un proyecto requiere que ciertos ficheros solo puedan ser descargados por un perfil concreto de usuarios; usuarios registrados, admins, etc.

Ocultar los links a aquellos usuarios que no tiene acceso a estos documentos suele ser suficiente por lo general, pero debemos ser conscientes de que este método no impide que un usuario con acceso al fichero pueda compartir la url con otros.

Si este nivel de seguridad nos resulta insuficiente, una alternativa puede ser realizar las descargas por medio de un script PHP en lugar de apuntar al fichero directamente. Este método podría permitirnos incluso la descarga de ficheros que se encuentren fuera de los directorios a los que apache tiene acceso.

if($usuarioValido == true) {
$name = $_GET['file'];
header("Content-disposition: attachment; filename=$name");
header("Content-type: application/octet-stream");
readfile($directorio.'/'.$name);
} else {
echo "No puedes descargar este archivo";
}

Compartir:
  • Facebook
  • Twitter
  • Meneame
  • Google Bookmarks
  • del.icio.us
  • BarraPunto
  • Bitacoras.com
  • Netvibes
  • MySpace
  • Technorati
  • email
  • PDF

Ningun post realacionado

4 Respuestas en “Proteger descargas con PHP”

  1. Metal  on Octubre 19th, 2009

    Gracias por este script que me acerca un poco a lo que quiero y de paso dejo la duda por si me puede colaborar :) .

    Lo que quiero es que en lugar de que el script verifique si esta un usuario registrado, verifique el codigo captcha (recaptcha) y lo deje descargar, muchas gracias por tomarse el tiempo de leer la pregunta :) .

    Dejo un link de un foro donde postee mi problema pero aun no me responden :( http://www.forosdelweb.com/f18/sistema-descargas-validado-por-captcha-744181/

  2. flmn  on Octubre 20th, 2009

    Para lo que buscas, entra en la siguiente dirección:
    http://recaptcha.net/plugins/php/

    Fíjate en el 4º punto, la variable $resp->is_valid te indicará si el captcha es valido, por lo tanto reemplaza en el código de arriba el primer if por:
    if($resp->is_valid == true)

    Así a ojo, con eso debiera bastarte

    Salu2

  3. Metal  on Octubre 20th, 2009

    Muchas gracias por la info :) , me ayuda bastante, ahora ando parado en como haer para que en la seccion de descargas salagan los archivos a descargar y que al usuario dar clic en el archivo que desee bajar, sea redireccionado a la pagina con el script recaptcha para que verifique el capctcha y lo deje descargar el archivo que eligio al principio.

    No se si me hice entender :s, de verdad espro que me pueda ayudar con esto.

    Si no gracias de ante manos por todo.

  4. flmn  on Octubre 22nd, 2009

    Lo siento pero este no es el lugar más indicado para lo que preguntas, el hilo se puede alargar indefinidamente.

    De todas formas te animo a echarle un vistazo a los vídeo tutoriales de PHP en http://www.illasaron.com, seguro que acabas aclarando tus dudas con el lenguaje ;)


Deja un comentario

You must be logged in to post a comment.