Seguridad bajo PHP y MySQL
27 de August, 2008. Escrito por [Q]boss en PHP + MySQL, Recursos

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]
Comments
2 Responses to “Seguridad bajo PHP y MySQL”
Leave a Reply
Dreamweaver utiliza una función muy bonita llamada GetSQLValueString(valor,tipo) muy útil para estas situaciones y bastante personalizable.
Buen articulo, muchos programadores dejamos inconsientemente huecos que pueden ser aprovechados por hacker, estos tips son importantes para evitar eso. Saludos… sigan adelante