Los CGI el poder de proceso para las webapps
By: Date: julio 16, 2014 Categories: Programación

Hay un poder oculto en las WebApps que se ha olvidado, los poderosos CGI, las WebApps basadas en lenguajes como PHP, C#, Java y otros no pueden competir contra un binario nativo, los CGI ofrecen la oportunidad de escribir aplicaciones en prácticamente cualquier lenguaje pero más importante que todo, estos lenguajes pueden ser C o cualquier otro compilado a código nativo, si la WebApp tratara de cálculos matemáticos, lo ideal sería hacerlo en lenguajes que compilen nativamente , tan rápidos como C, Ensamblador, Pascal y otros menos como Perl o simplemente el Shell del sistema operativo, una WebApp escrita en BASH por ejemplo.

Los CGI fueron olvidados por que son un poco más complicados de programar y usar que solo escribir el código dentro del html como PHP y estos requieren un tratamiento especial sin embargo usan los métodos de entrada y salida standart para intercambiar datos esto permite que cualquier lenguaje que pueda manejar STDIN o el STDOUT pueda ser usado como CGI, los primeros formularios de internet no se hacían con PHP ni lenguajes comunes disponibles actualmente, se hacían con CGIs para este ejemplo voy a configurar la carpeta tradicional de los CGI la CGI-BIN, dentro de esa carpeta van los CGI y los binarios que se ejecutaran para crear WebApps como se hacía originalmente. Por supuesto en la década de los 90’s no se llamaban WebApps solo CGIs

Para esta demostración uso un Apache 2.4.7

Por lo general el directorio o carpeta de CGI va junto con la de HTML, pero con las configuraciones de seguridad de mi servidor esto no podria ser, asi que la pondré en /usr/cgi-bin se declara en el virtualhost y se le da permiso al directorio donde se ejecutara los CGI de otra forma Apache mandaria un error de forbidden esto se debe a que no permite leer directorios que no estén previamente autorizados en la propia configuración de apache.


Order Deny,Allow
Allow from all
Options FollowSymLinks
AllowOverride AuthConfig Limit Options
Require all granted

Tambien se debe declarar que el directorio será usado como repositorio de CGI en virtualhosting con ScriptAlias

ServerAlias www.lastdragon.net
ScriptAlias /cgi-bin/ "/usr/cgi-bin/"

De esta forma cada que en URL del navegador ponemos /cgi-bin apache entiende que tiene que ir a buscar en /usr/cgi-bin

Tambien debe cargarse el modulo de CGI

LoadModule cgi_module modules/mod_cgi.so

Estos pasos son específicos para las versiones Apache 2.4.x, anteriormente incluso era más fácil pero dudo mucho que compilen versiones viejas si esta disponible las actuales.

A partir de ahora Apache puede de manejar CGIs, Apache provee a los CGI por medio de standat input o variables de entorno la información que viene del exterior, muchas de las variables que usan en PHP en realidad no son de PHP son de Apache

Ejemplo de un CGI hola mundo escrito en BASH

Nótese que he dejado 2 líneas en blanco, en un CGI son obligatorias o habrá un error 500 en el servidor web

Ahora manipulando métodos GET con un Shell BASH

Ahora un sencillo programa escrito en C


Ver mas grande

En próximos artículos podría incluir ejemplos para manejo de datos y hacerlo con binarios escritos en C u otros lenguajes como pascal, pero como ya seguro piensas incluso con CGI es posible manejar bases de datos con las librerías de C

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *