Common Gateway Interface (CGI) o interfaz de entrada común es una interfaz de los se­r­vi­do­res web que permite in­te­r­ca­m­biar datos entre los se­r­vi­do­res y las apli­ca­cio­nes externas de manera es­ta­n­da­ri­za­da. Se encuentra entre las te­c­no­lo­gías de interfaz más antiguas de Internet, aunque su uso sigue muy extendido en la ac­tua­li­dad. Con el CGI, no es necesario que todo el contenido de la página HTML esté di­s­po­ni­ble en el servidor, sino que este se genera de forma dinámica cuando el usuario realiza la solicitud co­rre­s­po­n­die­n­te a través de la propia página.

Fu­n­cio­na­mie­n­to y apli­ca­ción de CGI

Cuando un usuario realiza una petición en una página web, estos datos no se envían di­re­c­ta­me­n­te al servidor, sino que primero deben pro­ce­sar­se. Este pro­ce­sa­mie­n­to no se lleva a cabo en el servidor, sino mediante un software externo (o un script CGI). A través de una interfaz CGI es­ta­n­da­ri­za­da, el programa tra­n­s­fie­re los datos al servidor, que, a co­n­ti­nua­ción, puede mostrar los datos recién generados en un documento HTML. Por lo general, las apli­ca­cio­nes CGI suelen al­ma­ce­nar­se en su propio di­re­c­to­rio en el servidor web.

El propio script CGI puede es­cri­bi­r­se en gran variedad de lenguajes de pro­gra­ma­ción. Common Gateway Interface garantiza que, al margen del lenguaje utilizado, el servidor web y el script puedan co­mu­ni­car­se entre sí.

Usos de Common Gateway Interface

  • Cesta de la compra: cuando un cliente añade algún producto a la cesta de la compra de una tienda en línea, el script CGI procesa esos datos y, luego, los envía al servidor.
  • Co­me­n­ta­rios: el usuario rellena un campo de co­me­n­ta­rios. Cuando hace clic en “Enviar”, el texto se transmite al script CGI, que, a su vez, lo reenvía al servidor.
  • Fo­r­mu­la­rios: también en el caso de los fo­r­mu­la­rios en línea, como a la hora de enviar algún mensaje o in­s­cri­bi­r­se en una oferta de trabajo, los datos in­tro­du­ci­dos ​​son pro­ce­sa­dos ​​primero por Common Gateway Interface antes de tra­n­s­mi­ti­r­se al servidor.
  • Es­ta­dí­s­ti­cas de páginas web: cuando las páginas web muestran el tráfico que tienen, la te­c­no­lo­gía que lo respalda también recurre al CGI en muchos casos.
  • Server Side Includes: el uso de Common Gateway Interface permite cargar el contenido en formato de texto di­ná­mi­ca­me­n­te en la página web.
  • Pruebas de software: a través del navegador, los de­sa­rro­lla­do­res pueden utilizar scripts CGI para probar la fu­n­cio­na­li­dad de las apli­ca­cio­nes en línea externas para páginas web.

Hasta los usuarios sin ningún co­no­ci­mie­n­to de pro­gra­ma­ción pueden reconocer fá­ci­l­me­n­te si un script se está eje­cu­ta­n­do ac­tua­l­me­n­te mirando el URL, donde hay co­di­fi­ca­da una de­te­r­mi­na­da cadena de ca­ra­c­te­res con todos los datos re­le­va­n­tes del script que deben tra­n­s­mi­ti­r­se al servidor. Existen tres formas de tra­n­s­mi­sión de datos:

  • QUERY_STRING: este método se utiliza pri­n­ci­pa­l­me­n­te para las pe­ti­cio­nes de los usuarios.
  • PATH_INFO: este método envía in­fo­r­ma­ción co­n­te­x­tual sobre la página web.
  • Stdin: con este método, se procesan otras so­li­ci­tu­des del usuario.

Ventajas e in­co­n­ve­nie­n­tes de Common Gateway Interface

A pesar de sus años de an­ti­güe­dad, CGI sigue siendo uno de los es­tá­n­da­res más uti­li­za­dos en el de­sa­rro­llo de páginas web. No obstante, esta te­c­no­lo­gía no solo presenta ventajas, sino también algunos in­co­n­ve­nie­n­tes.

Ventajas

El CGI es una forma sencilla y eficaz de generar contenido dinámico en las páginas web. Al mismo tiempo, como las apli­ca­cio­nes CGI no tienen que al­ma­ce­nar­se en el servidor, no se utilizan recursos in­ne­ce­sa­ria­me­n­te. Desde un punto de vista práctico, otra ventaja de Common Gateway Interface es que es co­m­pa­ti­ble con varios lenguajes de pro­gra­ma­ción y, por lo tanto, puede in­co­r­po­rar­se fá­ci­l­me­n­te a las in­frae­s­tru­c­tu­ras exi­s­te­n­tes. Por último, pero no por ello menos im­po­r­ta­n­te, se trata de un estándar gratuito y di­s­po­ni­ble para todos los de­sa­rro­lla­do­res en cualquier momento.

In­co­n­ve­nie­n­tes

Uno de los mayores puntos débiles de Common Gateway Interface es que, aunque la carga del servidor se reduce, el tiempo de respuesta de las apli­ca­cio­nes CGI se alarga mucho en algunos casos, porque los programas deben volver a eje­cu­tar­se con cada nueva solicitud. Es­pe­cia­l­me­n­te en el caso de las páginas web con mucho tráfico, el hecho de que los se­r­vi­do­res solo suelan admitir una cierta cantidad de apli­ca­cio­nes CGI y que otras so­li­ci­tu­des entrantes se pongan en espera o, di­re­c­ta­me­n­te, se rechacen puede suponer un problema.

Por otra parte, al igual que otras in­te­r­fa­ces, Common Gateway Interface puede suponer un riesgo para la seguridad si no se configura un medio de pro­te­c­ción adecuado. En teoría, a través del CGI, los programas externos tienen acceso a todos los datos del servidor web. Por lo tanto, deben es­ta­ble­ce­r­se unas re­s­tri­c­cio­nes claras para evitar que los scripts CGI causen daño.

Al­te­r­na­ti­vas a Common Gateway Interface

En los últimos años, se han de­sa­rro­lla­do otras te­c­no­lo­gías de interfaz basadas en CGI, pero que intentan mitigar su principal in­co­n­ve­nie­n­te: que los scripts deban volver a eje­cu­tar­se con cada nueva solicitud del usuario.

ASP (Active Server Pages): ASP fue de­sa­rro­lla­do ori­gi­na­l­me­n­te por Microsoft para sus propios se­r­vi­do­res, pero ahora está di­s­po­ni­ble para muchos otros. El in­té­r­pre­te ASP está integrado en el servidor web, por lo que no es necesario iniciar nuevos procesos al uti­li­zar­lo. Los comandos ASP se pueden escribir di­re­c­ta­me­n­te en las páginas HTML. Al igual que CGI, ASP también es co­m­pa­ti­ble con varios lenguajes de pro­gra­ma­ción.

PHP: junto con Perl, PHP es uno de los lenguajes de scripting más uti­li­za­dos en Internet. La fu­n­cio­na­li­dad de PHP es muy similar a la del script CGI. Sin embargo, el in­té­r­pre­te PHP está integrado di­re­c­ta­me­n­te en el servidor web.

Co­l­d­Fu­sion: se de­sa­rro­lló ori­gi­na­l­me­n­te para Windows, pero ahora también está di­s­po­ni­ble para varias pla­ta­fo­r­mas Unix. El in­té­r­pre­te de Co­l­d­Fu­sion está integrado en el servidor web, al igual que las al­te­r­na­ti­vas a CGI me­n­cio­na­das más arriba. Las páginas HTML se pueden modificar con etiquetas pre­de­fi­ni­das o con elementos de control pe­r­so­na­li­za­dos. Además, Co­l­d­Fu­sion ofrece a los de­sa­rro­lla­do­res una serie de funciones estándar.

FastCGI: con FastCGI, las so­li­ci­tu­des dinámicas del servidor web pueden pro­ce­sar­se di­re­c­ta­me­n­te a través de una interfaz Perl sin tener que iniciar un nuevo proceso. FastCGI es am­plia­me­n­te co­m­pa­ti­ble con CGI y con gran variedad de se­r­vi­do­res web.

Ir al menú principal