descargar archivos PHP

Iniciado por basickdagger, 16 Diciembre 2013, 17:30 PM

0 Miembros y 1 Visitante están viendo este tema.

basickdagger

bueno ya antes habia descargado archivos php con un ejemplo q ronda por la web....
el problema surge cuando usuario X descarga de carpeta 1 y usuario Y descarga d e carpeta 2
dependiendo el usuario yo hago esto..
 
<a href="descarga.php?archivo=documentos/'.$row['ruta'].'" >'.$row['archivo'].'</a>



y si descarga pero ps claramente esto no es seguro como puedo agregarle algo de seguridad a este código? quiero aclarar q $row['ruta'] a veces es carpeta1 o carpeta2 o carpeta3 dependiendo la session iniciada...



$file = $_GET['archivo'];
header("Content-disposition: attachment; filename=$file");
header("Content-type: application/octet-stream");
readfile($file);



como puedo controlar la seguridad... gracias de antemano...

naderST

Exactamente que quieres hacer? Quieres restringir que usuario Y descargue de la carpeta 1 y que usuario X descargue de la carpeta 2?

basickdagger

Cita de: naderST en 18 Diciembre 2013, 05:11 AM
Exactamente que quieres hacer? Quieres restringir que usuario Y descargue de la carpeta 1 y que usuario X descargue de la carpeta 2?


hola gracias por responder... si eso era lo q queria.. pero realmente mi duda era como colocarle seguridad... por q si bien la URL se modificaba
y se colocaba por ejemplo..  ../index.php ellos podian descargar archivos del sitio...

pero ya lo pude resolver... cargo primero la session del usuario registrado y la verifico si no es usuario lo corro, luego envio la url incompleta y comparo la ruta con el campo del id de mi usuario después en mi archivo download cargo lo restante de la URL, y utilizo el basename para darle el nombre a mi archivo, y concateno todos los pedacitos de la url xD...

al menos así lo hice... aún así si tienen algún consejo para darle más seguridad seria de mucha ayuda.. salu2...

naderST

#3
Simplemente no dejes que el php descargue exactamente lo que está en la URL, pudieras asociarle un ID a cada archivo en una tabla de una BD o algo similar.

EDIT

También pudieras validar que la ruta del archivo no contenga "../" para evitar que descarguen desde directorios padres.