next up previous contents
Next: Referencias Biblográficas Up: Consideraciones de Seguridad Previous: Los Nombres de los   Índice General

Invocando Programas

Muchos scripts CGI invocan a otros programas, ya sean creados por el usuario o del sistema, lo que supone el principal agujero de seguridad en CGI.

El problema básico es que por ejemplo un script CGI llame a grep con una expresión regular de cualquiera de las maneras siguientes (en Perl o C):

system("grep $exp database");
sprintf(comando,"grep %s database",exp);system(comando);

tiene varios problemas, sobre todo si consideramos que exp puede valer ``root /etc/passwd; rm'', con lo que lee el fichero de passwords y además inutiliza el sistema.

La solución puede ser colocar comillas de la siguiente manera:

system("grep \"$exp\" database");
sprintf(comando,"grep \"%s\" database",exp);system(comando);

pero surge el problema que de las comillas se emparejen con otras dentro de exp con lo que se anule su efecto.



Jesús Vegas 2003-03-13