AnuncioLa interfaz de puerta de enlace común (CGI) es una interfaz para el intercambio de datos entre un servidor web (programa de aplicación) y software de terceros que procesa solicitudes. CGI es una variante para hacer que los sitios web sean dinámicos o interactivos. La tecnología fue desarrollada en el Centro Nacional de Aplicaciones de Supercomputación (NCSA) y se ha utilizado en la World Wide Web desde 1993. Cómo funciona CGI A partir de una solicitud HTTP, el servidor web puede iniciar un proceso a través de CGI. La información se puede transferir al proceso como parámetros. Estos pueden basarse en la entrada del usuario desde un formulario web, por ejemplo. El resultado del proceso, a su vez, se pasa al servidor web, que puede generar una respuesta HTTP basada en él. Opcionalmente, también se pueden intercambiar datos entre el proceso y el servidor web a través de flujos de datos estándar mientras se ejecutan los procesos. Para utilizar esta función, los servidores web proporcionan subrutinas, bibliotecas, scripts o programas adecuados, así como algunas variables de entorno. Deben estar presentes las siguientes nueve variables de entorno: GATEWAY_INTERFACE QUERY_STRING REMOTE_ADDR REQUEST_METHOD SCRIPT_NAME SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWAREGATEWAY_INTERFACEQUERY_STRINGREMOTE_ADDRREQUEST_METHODSCRIPT_NAMESERVER_NAMESERVER_PORTSERVER_PROTOCOLSERVER_SOFTWARE Pros En lugar de Simplemente cargando páginas estáticas desde un servidor web que están disponibles allí como un recurso listo para usar, CGI también hace posible generar dinámicamente Contenido web (páginas o fragmentos HTML, gráficos, documentos PDF, etc.). Esto significa que no tienen que existir en el servidor en el momento de la solicitud, sino que pueden ser generados por el programa CGI. Básicamente, los programas CGI se pueden escribir en cualquier lenguaje de programación que admita el sistema operativo, siempre que se haya especificado previamente. Se cumplen los requisitos mencionados. Desventajas Una desventaja de la ejecución CGI, además del riesgo de seguridad a menos que exista la protección adecuada, es su velocidad relativamente lenta, ya que se inicia un nuevo proceso para cada llamada CGI. Además, muchos servidores sólo admiten un número limitado de solicitudes CGI, por lo que muchas solicitudes permanecen en cola o incluso son rechazadas. Las alternativas que dependen de CGI pero que pueden evitar el arranque de los procesos incluyen FastCGI, ASP, PHP y ColdFusion. Además, existen módulos, p. ej. para el servidor web Apache, que integran el intérprete para distintos lenguajes de programación (p. ej. mod_perl para Perl, mod_python para Python, etc.) directamente en el proceso del servidor web. Esto significa que sólo se carga una vez cuando se inicia el servidor web, en lugar de cargarse nuevamente con cada solicitud. Mantener los programas ejecutándose como procesos externos, pero pasarles las solicitudes a través de FastCGI es la solución que probablemente se mantendrá fiel al principio CGI. A diferencia de la integración mencionada anteriormente como módulo de Apache, no sólo el intérprete del lenguaje de programación puede ejecutarse permanentemente. La aplicación en sí también puede permanecer cargada todo el tiempo, lo que le permite procesar las solicitudes entrantes de manera aún más eficiente. Seguridad El hecho de que programas creados por un tercero puedan ejecutarse en el servidor web es muy relevante para la seguridad. Por lo tanto, es importante asegurarse de que un programa iniciado a través de CGI solo pueda ejecutar ciertos tipos restringidos de rutinas de programa (por ejemplo, no eliminar archivos del servidor web, etc.). En el caso del servidor web Apache, la ejecución Los programas CGI están protegidos con la ayuda del módulo mod_suexec contra ataques de crackers que pretenden penetrar como usuario root. Las medidas de seguridad son multinivel y tan estrictas que muchos administradores de servidores han pasado a ejecutar otros lenguajes del lado del servidor a través de CGI.