miércoles, 29 de agosto de 2007

Despues de estar un rato viendo codigo en PHP de algunos proyectos CMS (Content Manager System), me veo en el tragico momento de verme frustrado de como sus programadores permiten tantos agujeros de seguridad en sus codigos, esto es realmente una cosa inconsebible debido a que hacen un mal uso de la programacion, los algoritmos utilizados son realmente una cosa espantosa porque son demasiados deficientes.

Y es que ense~ar programacion es una cosa, pero ense~ar programacion segura es otra, aprender a analizar algoritmos, aprender funciones especiales, aprender tecnicas de explotacion, son algunas de las cosas que pocos programadores estan dispuestos a obtener. Para cubrir agujeros de seguridad, e identificar debilidades de dise~o es necesario entender la estructura de control del software.

Los lenguajes actuales (o mas populares) ya traen incorporadas algunas funciones que cubren el proposito de reforzar el codigo fuente en cuanto a seguridad se refiere (htmlentities(),addslash()). Los programadores que trabajan con C normalmente tienden elaborar mejores algoritmos en base a las funciones que tienen disponibles.

Aunque en cierta forma la mayoria de programadores asalariados tienen que cubrir cierto requisito de entrega del proyecto, y es que el tiempo cuenta y mucho, es por eso que no se cubren los estandares de seguridad necesarios para un software ya sea hecho a la medida o para propositos comerciales, pero eso aun asi no justifica la irresponsabilidad del programador en cuanto al uso funciones factibles a ser vulneradas, y mucho menos a gran escala.

Los representantes mas notables en Software y Software para entornos web, son el Buffer Overflows y el SQL Injection, ambos capaces de comprometer cruelmente un servidor y dejar imposibilitado al administrador, y es realmente sorprendente lo facil que es encontrar este tipo de agujeros sobre todo en codigos muy extensos.


#include
void main(int argc, char **argv[])
{
char
buffer[16];
strcpy(buffer,argv[1]);
return 0;
}



include("config.php");
include("funciones_mysql.php");
$query=$objeto->mysql_query("UPDATE
users SET nick='$new' WHERE nick='$last'");
?>


Un saludo

0 comentarios :