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
El método de depuración del Pato de Goma (the Rubber Duck method of debugging)
Vía Smashingmag me encuentro con el Rubber Duck Method of Debugging, que os traduzco a continuación:
Hay una completa metodología de desarrollo (cuyo nombre ahora no recuerdo) que hace uso de este fenómeno.
La llamamos el Método de Depuración del Pato Goma. Y funciona así:
1. Pide, suplica, roba, compra, fabrica, o búscate la forma de conseguir un pato de goma (de esos de la bañera).
2. Ponlo en el escritorio y explícale que vas a repasar un bloque de código con él, si no le importa.
3. Explícale al pato lo que tu código debe hacer y cuéntaselo en detalle, línea por línea.
4. En algún momento, le dirás al pato lo que el siguiente paso debe hacer y entonces te darás cuentas de que no es lo que está haciendo en realidad. El pato permanecerá sentado tranquilamente, feliz de saber que te ha ayudado en tu camino.
Funciona siempre. En realidad, si te ves en el apuro de no tener a mano un pato de goma puedes pedirle a algún programador o a algún ingeniero que se siente en el escritorio.
Lo cierto es que yo siempre la he utilizado de una forma u otra y siempre, quienes mejores ideas dan, son las personas que más alejadas están del desarrollo que se está realizando.
Foto: Alex France
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.

