**  Home  **  Resumen   **   Infografía  ** 

 

CGI  (Common Gateway Interface)

Definición

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.

 

Caracaterísticas

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

 

Usos del GCI

El CGI es utilizado comúnmente para contadores, bases de datos, motores de búsqueda, formulários, generadores de email automático, foros de discusión, chats, comercio electrónico, rotadores y mapas de imágenes, juegos en línea y otros.

Mecanismo de entrega y procesamiento de datos

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:

  1. Al usuario se le presenta a través de su navegador una página en formato HTML que contiene un formulario.  Una vez que el usuario ha rellenado los campos del formulario, pulsa el botón de enviar, que invoca al programa CGI en el servidor.
  2. Los datos del formulario se envían al servidor utilizando bien el método POST o el método GET.
  3. Los datos llegan hasta el servidor a través de la Internet, donde la aplicación CGI invocada los procesa.
  4. Una vez convenientemente procesados, el programa CGI debe ejecutar alguna acción o generar una respuesta, generalmente en la forma de una página en formato HTML, que será enviada de vuelta al navegador.
  5. Se añaden las cabeceras HTTP necesarias y se envía de vuelta a través de Internet el archivo HTML con la respuesta a los datos del formulario convenientemente presentada.
  6. El navegador Web recibe el archivo HTML y lo visualiza en pantalla. Es común que la página contenga alguna información relacionada con el resultado del procesamiento de los datos, junto con algún enlace para regresar a la página del formulario, en el paso 1.

 

 

RIESGOS DE CGI

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.

 

Vulnerabilidad

El punto vulnerable de la programación en CGI, es decir, la amenaza que representan para la seguridad del servidor, es doble:

 

Dónde está el riesgo

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.