** Home ** Resumen ** Infografía **
La interfaz de pasarela común (Common Gateway Interface, CGI) es un protocolo genérico que permite extender las capacidades de HTTP. Los programas en CGI añaden funcionalidad al servidor Web, funcionalidad que podría abrir agujeros de seguridad en el servidor, ya que una aplicación en CGI mal diseñada podría permitir acceso total o parcial al servidor.
En general, es necesaria la presencia de dos elementos, una página Web en formato HTML con un formulario donde el usuario introduce sus datos, y un programa CGI en el servidor, que recibe y procesa los datos del usuario.
Los programas que maneja el CGI pueden estar compilados en diferentes lenguajes de programación. El más popular para el desarrollo de contenidos Web es el lenguaje Perl, aunque también se puede mencionar: C, C++ Y Java.
El funcionamiento de esta tecnología es muy sencilla. Los scripts residen en el servidor, donde son llamados, ejecutados y regresan información de vuelta al usuario.
Existen dos formas de enviar información asociada a un formulario: siendo estas por medio de GET y POST.
El primero envía la información dentro del URL
separando los campos con signos de interrogación '?' antes de la información.
Esta forma presenta varias desventajas, ya que no permite manejar grandes
cantidades de información y por ser una dirección, los ´jaquers´ de los
navegadores pueden guardar los resultados, lo que dificulta el poder acceder
nuevamente a la aplicación, pero simplifica el uso de los scripts con solo
utilizar una dirección URL.
La otra forma de enviar la información es por medio de POST, el cual envía la información directamente al servidor, haciéndolo invisible en el URL y permitiendo cualquier cantidad de información, como el envío de archivos. Éste es el método más seguro de usar y por tanto el más utilizado
En la figura se muestra de manera simplificada el proceso que tiene lugar desde que al usuario se le presenta el formulario de entrada de datos hasta que obtiene la página de resultado de procesar esos datos:
Cada vez que rellenamos un formulario y enviamos nuestros datos o cada vez que utilizamos un buscador para encontrar información, tanto si lo sabemos o no, estamos haciendo uso de programas CGI. A continuación se describe de forma resumida como están expuestos los servidores Web que incluyen aplicaciones CGI para llevar a cabo funciones avanzadas de interacción con el cliente, así como los propios usuarios, que al enviar información posiblemente confidencial, podrían ver violada su intimidad si dicha información fuera capturada por un atacante.
El punto vulnerable de la programación en CGI, es decir, la amenaza que representan para la seguridad del servidor, es doble:
Cuando los usuarios envían un formulario o invocan un CGI de alguna otra forma, en definitiva se les está permitiendo ejecutar remotamente un programa en el servidor. Es más, puesto que la mayoría de CGI's aceptan datos de la entrada de usuario (bien después de rellenar un formulario o directamente desde la línea de URL), en esencia se les brinda a los usuarios la oportunidad de controlar cómo se ejecutará el CGI, de manera que podrían intentar la introducción de una serie de parámetros inesperados hábilmente manipulados para que el CGI funcionase maliciosamente.