Siete consejos para programar PHP de forma segura
Escrito por Jose Carlos el 23 de Febrero de 2008
Siempre que nos ponemos a pensar en una web dinámica, que queremos crear usando PHP, pensamos en todo lo que vamos a implementar, en como hacerla usable y todo eso.
Sin embargo, existe un tema espinoso para muchos, y que casi nunca nos apetece lidiar con el: la seguridad.

Pero siendo realistas, con los tiempos que corren, la seguridad es un factor importante a la hora de programar nuestra web. Por ello, he creado una pequeña lista de 7 consejos sobre como programar php de forma segura.
1. Tipos de datos: todo lo que entra por el usuario, ($_GET,$_POST,$_COOKIE) debe tener el tipo de dato que requiere, por ejemplo, si recogemos vÃa $_GET el número de artÃculo a visualizar, nos aseguramos de que sea un número: $num = (int)$_GET[’articulo’];
Pensando siempre en que tipo de dato queremos esperamos recoger, estamos evitando numerosos posibles problemas en un futuro.
2. Rango de los datos: si además esos datos que entran por el usuario, tienen un rango definido, hay que comprobarlo, por ejemplo: un nombre de usuario, tiene un máximo de caracteres, se mide con strlen, un número de página normalmente no puede ser negativo, se comprueba que no sea menor a 0, etc.
3. HTML: este es uno de los errores mas comunes en la actualidad, todos los datos que entren por el usuario y que contengan cadenas de texto, deben ser limpiados de caracteres html, a no ser que expresamente se quiera que el usuario pueda alterar el html de la página, lo cual es una situación muy especial. Para limpiar el código html, basta con aplicar la función htmlentities.
4. Basename: en muchas ocasiones, queremos crear webs dinamicas que incluyan un fichero u otro, según una variable recibida por get/post, sin embargo, incluir ficheros con include, cuya ruta puede ser manipulada por el usuario es muy peligroso, por que se podrÃan incluir ficheros remotos, para poder hacer esto podemos usar basename, una función que devuelve el nombre de archivo de una ruta dada, por ejemplo: /ruta/a.txt devolverÃa a.txt, de esta forma, podemos incluir archivos que recibimos por $_GET, haciendo algo como: include(’includes/’.basename($_GET[’page’]).’.php’);
5. mysql_real_escape_string: todo lo que provenga del usuario y vaya a entrar en una consulta sql, debe pasar primero por mysql_real_escape_string, de esta forma nos protegemos de inyecciones sql.
6. htaccess: crea ficheros .htaccess en los directorios que el usuario no deberÃa poder ver, para que no se pueda listar el contenido, o coloca ficheros index.html en blanco, asà es mas difÃcil que nadie se haga una idea de como funciona tu web.
7. Manejo de errors: PHP recomienda que se deshabilite la opción display_errors en el php.ini, sin embargo, muchos servidores web la mantienen habilitada, lo que conlleva que cualquiera puede provocar intencionadamente errores PHP en tu página, para conseguir información sobre las rutas al script, para evitar eso, puedes intentar hacer: ini_set(’display_errors’,'off’); y si no te funciona: error_reporting(0); al principio de tu script.
Espero que siguiendo estos sencillos consejos podáis despreocuparos un poco del engorroso problema de la seguridad.
Entradas relacionadas
Publicado en: Programación, SeguridadTags: PHP, Seguridad, webs
Reacciones de otros blogs sobre esta entrada




























[…] Siete consejos para programar PHP de forma segura […]
[…] ha gustado éste artÃculo sobre seguridad en PHP. Y me ha recordado a que hace ya un tiempo, en alguna conferencia sobre PHP, alguien enunció una […]