RESUMEN

CGI es una norma para establecer comunicación entre un servidor web y un programa, de tal modo que este último pueda interactuar con internet. También se usa la palabra CGI para referirse al programa mismo, aunque lo correcto debería ser script. De todos modos en este tutorial nos interesa aprender a escribir estos programas por lo cuál usaremos la palabra indistintamente, como es costumbre en castellano.

Un CGI (Common Gateway Interface) es un programa que se ejecuta en tiempo real en un Web Server en respuesta a una solicitud de un Browser. Cuando esto sucede el Web Server ejecuta un proceso hijo que o recibirá los datos que envía el usuario (en caso de que los haya), pone a disposición del mismo algunos datos en forma de variables de ambiente y captura la salida del programa para enviarlo como respuesta al Browser.
El propósito de los CGI´s es proveer "inteligencia" e interactividad a un sitio web, por ejemplo encontrar un sitio en Yahoo utilizando solo los links que se proveen puede ser una labor frustrante, sin embargo usar el formulario y solicitar una búsqueda personalizada suele frustrarnos (un poco) menos, ya que un CGI nos provee de una respuesta hecha a la medida (eso dice la teoría) de nuestra consulta.
Existen otras herramientas para lograr esto en cierta medida, tales como Server Side Includes o JavaScript, no es el propósito de este tutorial tocar con detalle estos temas.

Funcionamiento de los CGI

1. Lo que normalmente se conoce por CGI son pequeños códigos de programa que se adaptan al estándar Common Gateway Interface (CGI) mediante el cual se puede acceder a servidores de Internet que envían información a los usuarios. Mediante este sistema la web se comunica con recursos externos a la misma, como pueden ser bases de datos, y facilita la ínter actuación del internauta directamente con la máquina.

2. En la actualidad existen multitud de servicios para los cuales se usan secuencias de comandos CGI, de manera que en muchas ocasiones al navegar se están utilizando estos pequeños programas sin que nos percatemos de ello. Las consultas a bases de datos, el funcionamiento de foros, los tablones de anuncios, las estadísticas en tiempo real, muchos contadores de acceso a páginas web y un largo etcétera son ejemplos de su uso. En definitiva, la mayor parte de las ocasiones que en Internet se establece un diálogo con el ordenador, detrás existe una serie de comandos CGI en funcionamiento.

3. La programación de las secuencias CGI puede realizarse utilizando diversos lenguajes, como C, Visual Basic, AppleScript, Perl, etc. Las aplicaciones escritas en alguno de estos lenguajes, como C, necesitan ser compiladas para que se puedan ejecutar. Por otra parte, existen lenguajes llamados de secuencias de comandos, como Perl, que no necesitan de esta operación, siendo su utilización mucho más intuitiva y sencilla, aunque no tan potente. Sin embargo, dado que la mayor parte de las tareas automatizadas que en la actualidad se desarrollan en Internet no son de gran complejidad, son los lenguajes de secuencias los más utilizados, siendo seguramente Perl el que goza de mayor aceptación.

 

 

El primer paso es una solicitud que se formula desde una página web al servidor donde reside el CGI. A continuación el CGI solicita a la base de datos la información adecuada y es respondido. Finalmente se envían los datos, ya formateados para ser comprensibles, a la página web, donde son consultados por el usuario.
4. A continuación se explican los pasos fundamentales del funcionamiento de un CGI, concretamente uno que permite a los usuarios de una página web acceder a la consulta de una base de datos, si bien la explicación bien sirve para cualquier proceso adaptado al estándar CGI.

 

Por último, el programa CGI, una vez recibidos los datos, se dedica a darles una apariencia que sea comprensible para el usuario, es decir, construye un documento HTML en función de los parámetros dados por el programador, que incluye la información extraída de la base de datos. Esta página web se comporta como cualquier otra, pudiendo ser impresa, archivada en un disco duro o simplemente visualizada. 

Lenguajes

Aunque un CGI se puede programar en cualquier lenguaje soportado por el sistema operativo del servidor, usaremos el lenguaje C para nuestros ejemplos (excepcionalmente se tocarán algunos otros lenguajes).
 Otro lenguaje popular para escribir CGI´s es el Perl, el cuál es interpretado y al igual que el C es altamente portable entre sistemas operativos.

Servidor

Este sitio se encuentra funcionando sobre un servidor Apache cuya configuración particular obliga a que la extensión de los cgis sea .cgi, esto puede variar en el caso de tu webserver. Te sugiero que contactes a tu webmaster para que te indique que extensiones, lenguajes y directorios están a tu disposición para ejecutar CGI´s.

 Seguridad en CGI:  Centrados en la seguridad en la comunicación a través de redes, especialmente Internet, consistente en prevenir, impedir, detectar y corregir violaciones a la seguridad durante la transmisión de información, más que en la seguridad en los ordenadores, que abarca la seguridad de sistemas operativos y bases de datos. Consideraremos la información esencialmente en forma digital y la protección se asegurará mayormente mediante medios lógicos, más que físicos.