Seguridad en PHP y MySQL
Aunque poco se ha hablado en estas páginas de programación web del lado del servidor, hace unos meses descubrimos algunas funciones de PHP que, aunque poco frecuentes, nos pueden ser muy útiles a la hora de programar ciertos procedimientos.
Esta semana, en Security By Default, nos recordaban varias recomendaciones para securizar nuestras aplicaciones web a nivel de programación en PHP, evitando inyecciones SQL, XSS, CSRF, RFI, y problemas de seguridad en sesiones. Ya nos habían hablado anteriormente de una vulnerabilidad RFI en el sitio web de AT&T que dejaba el /etc/password del server vendido.
Hoy además han incidido con un artículo muy interesante en las inyecciones de código SQL mediante caracteres de escape.
Para empezar con la seguridad en PHP, es recomendable empezar a practicar comprobaciones de sesión como las que nos enseñan en DesarrolloWeb.com, válidas para programaciones procedurales pero que en POO pueden resultar en exposición de datos ya que el motor de PHP pre-interperta ciertos objetos (ojo con FPDF).
Un buen paso es seguir una checklist de seguridad en PHP muy completa como que la que publica skq89q.com
TCPDF: Convierte tu código HTML a PDF
Llevaba mucho tiempo una solución libre para generar documentos PDF en PHP de una forma rápida y dinámica. FPDF, seguramente la biblioteca maś conocida, se me había quedado muy pequeña para lo que yo necesitaba concretamente, se hacía muy costoso el mantenimiento de los documentos para ciertos cambios.
Vía Jesús Nieto he descubierto TCPDF, una biblioteca que, entre otras cosas, hace exactamente lo que yo necesitaba: exportar HTML a un documento PDF sin la necesidad de servidores de terceros.
El código es de una implementación muy sencilla como podéis ver en la página de ejemplos (para mí el maś interesante fue el sexto (Write HTML and RTL support), donde podemos ver cómo volcar código HTML al documento es tan sencillo como esto:
$html = "<h1 style='text-align:center'>Hola, Mundo</h1>";
$pdf->writeHTML($html, true, 0, true, 0);
Entre las características por descubrir tenemos la posibilidad de dibujar gráficas o maquetar y formularios de forma sencilla. Además de las funcionalidades me parece muy interesante, por cuestiones de privacidad, el hecho de que no necesita llamar a una aplicación externa -como requieren otras bibliotecas de pago-.
Las pegas: la sintaxis HTML por supuesto no es tan flexible como la que puede interpretar un navegador web y su generación es ligeramente lenta y costosa a nivel de recursos, por lo que en algunos servidores compartidos podría no funcionar.
Cinco funciones PHP que (quizás) nunca usarás
Vía @smashingmag encontré en Infinity-Infinity el artículo 10 PHP functions you (probably) never use, una recopilación de diez funciones de PHP de uso poco o nada frecuente que yo reduzco a cinco:
- sys_getloadavg() - Mide la carga de procesos del sistema.
- pack() – comprime una cadena en MD5 a 16 bytes, ideal para ahorrar espacio almacenando contraseñas utilizando: pack(md5(‘mipassword’));
- debug_print_backtrace() – para realizar trazas de un programa escrito en PHP (al descubrirla me pregunto ¿dónde has estado todo este tiempo?).
- natsort() – Ordena un array (como la función sort() de PHP de siempre), pero con un criterio natural.
- glob() – Busca rutas de ficheros siguiendo un patrón, ideal para hacer algo como foreach (glob(*.php) AS $archivo){}
Se menciona también la función levenshtein(), que mide la distancia de Levenshtein entre una cadena y otra (siempre me pareció muy potente, aunque nunca la he utilizado).
Después de haber leído la utilidad de cada una, varias de estas funciones PHP me parecen muy útiles.
