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...
Exactamente que quieres hacer? Quieres restringir que usuario Y descargue de la carpeta 1 y que usuario X descargue de la carpeta 2?
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...
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.