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.