Seguridad bajo PHP y MySQL

Por motivos del trabajo, últimamente nos hemos tenido que mirar bastante información sobre seguridad en PHP, ya la realidad es que es muy fácil saltarse las barreras de seguridad de una web si no se toman medidas para evitarlo.
La buena noticia es que hay medidas bastante simples que se pueden tomar y que ayudan bastante a eliminar un alto índice de atacantes que emplean técnicas tradicionales. La mala noticia es que la seguridad nuca será algo infalible.
Para el caso de PHP existen 2 recomendaciones fundamentales para evitar la inyección de SQL, que es uno de los ataques más habituales y sencillos de realizar, normalmente sobre campos de búsqueda ya que implican siempre el uso de la cláusula WHERE y por tanto un camino sencillo para meter código SQL sin errores.
1) uso de funciones que comprueben los tipos de datos recibidos, para asegurarnos que lo que vamos a usar en la consulta es del tipo que tiene que ser. Esto se puede complementar con control de longitudes en caso de strings, ya que si el campo es de unos 10 caracteres de tipo texto, limitando a eso podemos evitar inserción de consultas por el mero hecho del tamaño del string.
2) uso de funciones que controlan el escape de caracteres de forma correcta. Hace tiempo en PHP se usaba el addslashes y stripslashes, o las famosas magic_quotes, pero con el tiempo por motivos de eficiencia y efectos secundarios, las funciones recomendadas son las siguientes:
Versiones de PHP inferiores a la 4.3 - mysql_escape_string
Versiones de PHP iguales o superiores a la 4.3 - mysql_real_escape_string
Entre todos los recursos que nos hemos ido encontrando y estudiando, estos son los que creemos más elaborados, fiables y útiles. Esperamos que os sirvan como lo están haciendo con nosotros (vais a ver que los tópicos que tratan son recurrentes pero no está de más los detalles que se pueden sacar de cada uno de ellos).
Seguridad en PHP
- PHP Security Consistorium
- PHP.net web oficial
- MySQL Devzone, php|architect’s Guide to PHP Security > SQL Injection [EN]
- Seguridad en PHP - Capítulo Primero en PHP-Hispano
- SQL injection CheatSheet [EN] (para MySQL, SQL Server y PHP)
- Top 10 - Errores de seguridad en PHP [EN]
- Security Corner: SQL injection [EN] (magnífico blog sobre seguridad PHP y web)
- Inspekt, librería para facilitar las labores de seguridad en nuestros desarrollos [EN]
- Web application security (portal sobre seguridad web, pero representada particularmente para PHP)
- Basic PHP Security [EN]
- PHP Security Mistakes [EN]
- suspekt.org (un blog casi completamente dedicado a la seguridad a un gran nivel)
- Protecting MySQL from SQL injection atacks using PHP [EN]
European eLearning Summit 2008, día 3
Pues señores, esto se ha acabado, pero se ha acabado de buena manera. Hoy sin duda ha sido el día más interesante para nosotros, ya que se han interesado unas cuantas personas por nuestra presentación, en cómo hemos logrado ese volumen de contenidos con flash lite, y diversos factores del proyecto en sí.

El día ha comenzado con una Keynote (Disruptive Mobile Learning) de Mike Sharples, Director del Learning Sciencies Research Institute de la Universidad de Nottingham y que además ha sido una de las personas que se ha interesado por nuestro trabajo. Ha expuesto nuevos sistemas para lograr mejorar los procesos de aprendizaje en la actualidad, integrando las nuevas tecnologías y haciendo que el alumno no tenga un papel pasivo en el proceso, sino que participe del mismo, pueda seguir su propio camino para posteriormente ser mostrado ante los demás. Read more
European eLearning Summit 2008, día 2
Pues ya estamos de vuelta del segundo día de conferencias. Este ha sido especial, me he pegado mi primera chapa profunda en inglés castizo, del bueno. Me había preparado un montón de hojas para hablar en cada diapositiva, con todo lo que iba a decir bien redactado en un inglés más elaborado, pero hoy he descubierto que mi cualidad innata para darle a la palabra traspasa fronteras y no depende del idioma, sino que es algo mucho más profundo.

Primera diapositiva. Sigo el guión. Segunda diapositiva, me voy por las ramas. A la cuarta o quinta tenía un desfase entre el monitor y los papeles de unas 6 o 7 hojas. A mitad de presentación el papel había quedado enterrado debajo del portátil.
Consecuencia: he hablado mucho peor, pero me he sentido mejor conmigo mismo. Va en contra de mis principios leer una charla. Estoy seguro que el idioma ha hecho que no haya podido decir todo lo que quería como quería Read more
European eLearning Summit 2008, día 1

Pues esto ha comenzado, concretamente con un desayuno que espero poder mostraros mañana mismo y luego con la recepción, entrega de acreditaciones (como no con problemas por ser español, me alegra ver que tienen tantos problemas ellos con los apellidos españoles como nosotros con los ingleses) y bienvenida por parte de Mike Tomlinson.
European eLearning Summit 2008, día 0
Pues aquí estoy, en una habitación del Ancaster Hall dentro del Campus de la Universidad de Nottingham, tras un día intenso, como no pueden ser de otra manera cuando me voy de viaje (sino, que Raúl de fe de ello).

Tras salir de Asturias el domingo 17 a primera hora de la mañana (gracias Jorge, si es que en esta empresa da gusto… ) llegué a Barajas sin problemas, Terminal 1 y de allí el servicio de microbus que funcionó a la perfección, a los 15 minutos de bajarme del avión estaba instalado en mi habitación del hotel. No me gustó tanto comprobar que al día siguiente debería levantarme a las 3:45, o no se si a eso se le puede llamar levantarse… o no acostarse. El vuelo para East Midlands salía hiper temprano y no quería arriesgarme con el pollo que hay montado con Ryanair.
Encuentros Internacionales de Juventud: Cabueñes 2008
[Q] interactiva estará presente junto con Blocketpc en los XXVI Encuentros Internacionales de Juventud: Cabueñes 2008. Estos encuentros pretenden reflexionar en este año en torno a distintos bloques temáticos, estructurando la actividad formativa en Encuentros y en Talleres prácticos.

Los contenidos tendrán como denominador común las siguientes temáticas:
- Las TIC y la sociedad de la información
- Perspectiva de género
- 2008: Año Internacional del Planeta Tierra / Año Europeo del Diálogo Intercultural
Nuestra participación estará comprendida por dos talleres (el mismo en con dos enfoques un poco diferenciados por el público) titulados: Videojuegos, al otro lado del teclado. Estos talleres tendrán como ponentes a Raúl Jiménez y Marcos González de [Q] interactiva.
Os dejamos un resumen de la temática general del taller, al que le daremos nuestro enfoque hacia flash como herramienta completa de desarrollo de juegos principalmente casuales en web, escritorio y como no, móvil.
¿Alguna vez te has planteado el trabajo que requiere que ese muñequito te enganche durante meses? Pues ya es hora de que conozcas lo que hay al otro lado del teclado. Son jóvenes programadores, diseñadores, auténticos jugones. Nos harán una demostración para que te aproximes a lo que es una jornada de trabajo para ellos.
Podéis conocer un poco más sobre los encuentros en su blog, o en el canal youtube que han habilitado.
lerdo
Este palabro ha venido a mi tras dedicar una parte significante de mi vida a obtener un nuevo móvil de prepago a contrato.
Espero que D. Sebastián Lerdo de Tejada, ilustre persojane mexicano, jalapeño como nuestro amigo Luis, expresidente de dicho país tras suceder a Juárez y partícipe de la reforma entienda la necesidad de aclarar el significado de tan tremendo apellido.
lerdo, da.
(Etim. disc.).
1. adj. Dicho comúnmente de una bestia: Pesada y torpe en el andar.
2. adj. Tardo y torpe para comprender o ejecutar algo.
3. f. Veter. Tumor de las caballerías cerca de la rodilla.
He de decir que en el fenómeno que he sufrido a lo largo del día de hoy la palabra ha sido asignada a diversas personas en diferentes momentos del espectro temporal, de manera sucesiva, aleatoria y no cíclica. Read more
Web 2.0, Manual de entornos corporativos

Vía Ana Landeta,
Encontré hace ya bastante tiempo este documento (publicado por ANEI y la Comunidad de Madrid) que me pareció muy interesante. Lo he tenido como “pendiente” en el blog hasta hoy que Armando me ha “puñado” para que dejara de serlo.