Feb 16

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:

$f = $_GET["f"];
$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);
?&gt;

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

Feb 13

intro_ajax_pmi.jpg

Introducción a AJAX es un eBook de libre distribución con el cual aprenderás AJAX, comenzando desde cero y llegando hasta las técnicas más avanzadas.

El eBook consta de 282 páginas y contiene los siguientes capítulos:

Capítulo 1: Introducción a AJAX
Capítulo 2: JavaScript básico
Capítulo 3: JavaScript avanzado
Capítulo 4: DOM
Capítulo 5: BOM
Capítulo 6: Eventos
Capítulo 7: Primeros pasos con AJAX
Capítulo 8: Técnicas básicas con AJAX
Capítulo 9: Técnicas avanzadas con AJAX
Capítulo 10: Frameworks y librerías
Capítulo 11: Otras utilidades
Capítulo 12: Recursos útiles
Capítulo 13: Bibliografía
Capítulo 14: Ejercicios resueltos

Descargar | Página Oficial

Escrito por David

Feb 10

Algunas veces cuando estamos navegando nos encontramos con la descarga ocasional de algún MP3, pero en lugar de descargarse, se abre en nuestro reproductor de audio por defecto, a veces hasta en el mismo navegador. Lo mismo pasa con los documentos PDF que se abren en el navegador. Si tú tienes un sitio web y quieres hacer "descargable" u ofrecer descargas de cualquier tipo de archivo puedes hacerlo ya que no es muy complicado.

La mayoría de las tecnologías del lado del servidor nos permiten hacer esto, en este caso veremos cómo es con PHP.

<?php

    //  descargar.php
   
    $f = $_GET["f"];
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=$f");
    $fp=fopen("$f", "r");
    fpassthru($fp);
?>

Para utilizar este script, bastaría con ponerlo en la misma carpeta en donde tenemos nuestros archivos y referirnos a ellos así:

descargar.php?f=archivo.mp3
descargar.php?f=archivo.jpg

Sencillo no?

Demo MP3 | Demo JPG

Escrito por David