Seguridad bajo PHP y MySQL

Por motivos del trabajo, últimamente nos hemos tenido que mirar bastante información sobre seguridad en PHP, y 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