Hace días publique una entrada sobre como Forzar descargas con PHP en la cual les presentaba un script que les permitiría hacer descargable cualquier archivo alojado en su servidor. Bueno pues dicho script tiene un error de seguridad, y el error radica precisamente en su funcionamiento, ya que hacer descargable cualquier tipo de archivo me permitirá descargar hasta los mismo archivos .php, así que si tengo un archivo PHP que realice una conexión a una base de datos, estaría dándole la posibilidad a cualquier usuario de descargar dicho archivo y sacar el usuario y contraseña de mi base de datos ¬¬ ...
Bueno, el script sigue funcional, solo hay que hacer unas correcciones:
$archivos = array('.mp3','.jpg','.pdf');
$extension = strtolower(strstr($f,'.'));
if(strpos($f,'/')!==false)
exit("Los archivos de otros <strong>directorios</strong> no son descargables.");
if(!in_array($extension,$archivos))
exit("Los archivos con extensión <strong>$extension</strong> no son archivos descargables.");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$f");
$fp=fopen("$f", "r");
fpassthru($fp);
?>
Al script se le ha agregado un arreglo - $archivos - en el cual agregaríamos todas las extensiones de los archivos que quisieramos hacer descargables, además de que solo será posible descargar los archivos que se encuentren en el mismo directorio que el script.
Gracias a Javier Zatarain que me aviso de ese horror error xD
Escrito por David
Comentarios Recientes