eyeOS

Siete consejos para programar PHP de forma segura

datpostEscrito 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.

php logo

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.

guardado en Publicado en: Programación, Seguridad
Tags: , ,
technorati Reacciones de otros blogs sobre esta entrada
meneame fresqui del.ici.ous Google Bookmarks Echilame Technorati Mr.Wong Digg Yahoo! My Web BarraPunto Blinklist StumbleUpon ma.gnolia reddit Facebook


COMENTARIOS (2) deja comenatrio

  1. Febrero 24, 2008

    […] Siete consejos para programar PHP de forma segura […]

  2. Febrero 26, 2008

    […] 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 […]


COMENTAR


Todo el contenido bajo licencia CC | Funcionando gracias a WP | Diseño y creación de nativos2020