Common Gateway Interface (Interfaz Público de Pasarela)

Documentos relacionados
CGI (Common Gateway Interface) es un modo sencillo de crear contenido dinámico en un sitio Web

Aplicaciones Web. Aplicaciones Distribuidas

CGI. Qué significa CGI?

Aplicaciones Web. Introducción. David Cabrero Souto. Grupo MADS ( Universidade da Coruña

CGI/ASP (acceso a bases de datos desde una página HTML)

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: PRÁCTICA 1: IMPLEMENTACIÓN DE UN SERVIDOR WEB

Formularios en HTML 09/02/2015. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos

Más sobre PHP. Francisco José Naranjo Abad

Formularios en HTML. Grupo de Ingeniería del Software. Departamento de Lenguajes y Sistemas Informáticos. October 11

Grupo de Ingeniería del Software. Conceptos básicos de formularios HTML

Velneo vmodapache V7 7.6

Programación de páginas web dinámicas con CGIs

Servicio de publicación de información web (HTTP)

Tema 2 El Servicio Web

PÁGINAS DINÁMICAS WEB CON PHP. Unidad 4 Aplicaciones Web

2.4. Unidades de Aprendizaje. Unidad de aprendizaje: Desarrollo de páginas web estáticas. Número 1. Propósito de la unidad

GENERACIÓN DINÁMICA DE PÁGINAS

HTTP, CGI, Applets y Servlets

APLICACIONES DE INTERNET: SOAP

Lenguajes de Script. Qué son los Lenguajes de Script?

PRACTICA FINAL. Diseño e implementación de un servidor Web básico y cliente http. Protocolo HTTP-RC

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

EXTENSIÓN DE UML PARA APLICACIONES WEB

TEMA 5. Otras arquitecturas distribuidas IV. Web Services

5.- DESCRIPCIÓN DEL PROTOCOLO HTTP

Programación páginas web con PHP

Que harware necesito para conectarme a Internet?

1.- INTRODUCCIÓN. <etiqueta> contenido</etiqueta>

Modo básico de funcionamiento del módulo Velneo vmodapache V7

Tema 4: Tecnologías Web Java

Tema 3. Introducción a programas en el lado del servidor

NETCAT. En una de las máquina ponemos el netcat en modo servidor, a la escucha. En la otra, lo ponemos en modo cliente.

Generador de páginas WEB FrontPage2002 (2 de 2)

Unidad 1.- Fundamentos de sitios web. El lenguaje HTML. Desarrollo de aplicaciones Web. Felipe LC

CSS. Rogelio Ferreira Escutia

Tema 4: Diseño e Implementación de la Capa Web

INSTITUTO TECNOLÓGICO SUPERIOR DE SANTIAGO PAPASQUIARO PROGAMACIÓN WEB CATEDRATICO: ISC JOEL LEYVA MARES

UTN DESARROLLADOR WEB MOBILE. Diseño Multimedial. Presentación del curso. Temario a desarrollar

Sistemas Operativos Distribuidos

5.1. Qué es Internet? controla todo el sistema, pero está conectado de tal manera que hace

Servidores web. Concepto, Configuración y Usos

PHP 7 Desarrollar un sitio web dinámico e interactivo

Tutorial de enlace entre Formulario Web y Servicio Web REST. Programación en Internet

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

CAPÍTULO 5: PROTOCOLO HTTP

La web (el servicio WWW)

HTTP. Redes I. Departamento de Sistemas Telemáticos y Computación (GSyC) Noviembre de GSyC HTTP 1

Construcción de formularios en HTML. Formularios. Bases de Datos 2012/2013. Luis Valencia Cabrera

JSP(JAVA SERVER PAGES)

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

Sistemas Distribuidos Basados en la WEB

SERVLETS. Aplicaciones Distribuidas

Clase 22 Nivel de Aplicación WWW Tema 6.- Nivel de aplicación en Internet

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Índice: Tema Aplicaciones basadas en Sesiones

PROGRAMACIÓN PÁGINAS WEB JAVASCRIPT Y ASP.NET 3.5 (C#)

SERVIDOR WEB MULTIPLATAFORMA CON IMPLEMENTACIÓN CGI

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine.

Test redes y software de red

Desarrollo y servicios web

Cursos de Extensión Universitaria UNIVERSIDAD DE OVIEDO. Servicios Web (II)

ASP.NET. Prof. Gina Huertas Camacho

SAMICOM,Web&Solutions. Curso de capacitación para el diseño y desarrollo de aplicaciones web basadas en Linux

Servlets. 1. Introducción Características fundamentales Ventajas fundamentales... 2

Desarrollo y servicios web

HyperText Transfer Protocol

Formación CAU 1 er Nivel. Albergue Web Listas de distribución Consigna Certificados

APACHE, SERVIDOR WEB OPERACIÓN L21. VARIABLES DE AMBIENTE

Curso de Diseño web. Juan Carlos Hernández Pérez

Web Service: Consulta de Sistema de Turnos Manual de referencia

HyperText Transfer Protocol

TEMA 3: La Aplicación World Wide Web

DESARROLLO WEB EN ENTORNO CLIENTE

Su uso esta muy extendido en Internet, siendo la nomenclatura mas utilizada la de servidor web. Hay muchos servidores en Internet y muchos tipos de

Uso de formularios en HTML para enviar y recopilar datos

Aplicaciones Web con Servlets y JSP (I)

Punto 3 Protocolo HTTP. Juan Luis Cano

Transcripción:

Common Gateway Interface (Interfaz Público de Pasarela) Francisco Rosales Common Gateway Interface 1

Introducción La Web era de contenido estático Todo acceso a una hoja, daba el mismo resultado No satisfacía las necesidades de interactividad Documentos de contenido exclusivo para el acceso Se creó el Common Gateway Interface Un estándar que especifica como interconectar aplicaciones externas con servidores de información Ej. aplicación externa: Una consulta a BBDD Ej. servidor de información: Un servidor Web Common Gateway Interface 2

Funcionamiento básico Cuando accedamos a un CGI: Será ejecutado en el servidor en ese instante La información dinámica que produzca será presentada como resultado del acceso Usos: Contadores de accesos a las páginas Anuncios incrustados (banners) Buscadores etc. Common Gateway Interface 3

Ejemplo Consulta desde el navegador web El usuario: Rellena un formulario HTML y lo envía La acción asociada es URL a un CGI El servidor Web: Ejecuta (localmente) el CGI con los datos del formulario El programa CGI: Accede a la BD y, con el resultado, produce un documento HTML ad-hoc El servidor Web: Devuelve el documento, casi directamente, al navegador Common Gateway Interface 4

Ventajas e Inconvenientes Ventajas Mejora la seguridad de los usuarios No tendrán que ejecutar programas extraños en su máquina Simplifica la gestión de los servicios Al estar centralizado, se eliminan los problemas de mantenimiento y distribución de las aplicaciones Inconvenientes Puede comprometer la seguridad del servidor Que se ejecute algo en el servidor, aunque lo hayamos escrito nosotros, no es muy seguro y carga el sistema Common Gateway Interface 5

Precauciones de seguridad Todos los programas CGI suelen residir en un directorio especial del servidor: /cgi-bin Bajo control del webmaster El Administrador puede relajar esta restricción, pero no suele hacerse Common Gateway Interface 6

Lenguajes de Programación No hay restricción Compilables: C, C++, Fortran, etc. El ejecutable deberá estar en /cgi-bin Interpretados: El script, directamente ejecutable, en /cgi-bin Es mucho más fácil depurar, modificar y mantener Se usa mucho perl Muy potente pero bastante complejo Common Gateway Interface 7

Ejemplo: test.cgi #!/bin/sh echo "Content-type: text/plain" echo "" set -v ### Activa modo verbose del shell exec 2>&1 ### Dirige el error a la salida estd. echo "$0" #... Nombre del mandato echo "$@" #... Argumentos de invocación id #... Identidad del proceso pwd #... Directorio actual de trabajo env #... Variables de entorno cat #... Información en la entrada estándar #... FIN Common Gateway Interface 8

Para que funcione como CGI El servidor Web distingue un CGI de cualquier otro fichero convencional: Por su ubicación: Debe residir en /cgi-bin del sistema (o de la cuenta del usuario) Por su extensión: El nombre del fichero debe tener extensión.cgi Por sus permisos: Ejecución (y lectura) para todo el mundo Common Gateway Interface 9

Cómo invocar un CGI? I Directamente desde el Navegador Indicando su URL en el campo Location Al recorrer un hipervínculo Etiqueta A referida al URL <A HREF="/cgi-bin/test.cgi" > Enlace al CGI de pruebas </A> Common Gateway Interface 10

Cómo invocar un CGI? II Como origen de una imagen La salida del CGI debe ser de tipo imagen Es la forma de incrustar banners <IMG SRC="/cgi-bin/banner" ALT="Inserte aquí su publicidad"> Common Gateway Interface 11

Cómo invocar un CGI? III Como acción asociada a un formulario HTML Es el uso más común de los CGI El método de invocación (GET o POST) establece la manera en que el CGI recibirá los parámetros <FORM ACTION="/cgi-bin/test.cgi" METHOD="GET" > Common Gateway Interface 12

Paso de argumentos NO los reciben de la línea de mandatos Pueden indicarse en el URL http://.../cgi-bin/test.cgi/path_info?query_string Al CGI le llegan como variables de entorno PATH_INFO Texto a partir del nombre hasta la 1ª '?' (No suele aparecer pero) puede usarse para indicar caminos de búsqueda QUERY_STRING Texto desde la 1ª '?' hasta el final Este texto debe estar codificado Common Gateway Interface 13

Codificación URL Los espacios en blanco se sustituyen por el carácter '+' Otros caracteres especiales, por su valor hexadecimal con el prefijo '%' Common Gateway Interface 14

Método de invocación I Todo formulario HTML debe indicar: La acción asociada: un programa CGI El método de invocación: GET o POST Los datos del formulario le llegarán al CGI: Como un conjunto de pares nombre=valor Donde nombre, será el del atributo NAME de cada etiqueta INPUT o SELECT del formulario Los pares llegarán uno detrás de otro, separados por el carácter '&' Common Gateway Interface 15

Método de invocación II REQUEST_METHOD Esta variable de entorno indicará el método de invocación empleado Si fue GET Los datos llegarán (codificados) en la variable de entorno QUERY_STRING Si fue POST Llegarán por la entrada estándar La variable de entorno CONTENT_LENGTH indicará el número de bytes de información Common Gateway Interface 16

Entorno de ejecución La especificación define unas variables que el servidor Web debe poner en el entorno de ejecución de los CGI Se escriben en mayúsculas Un valor nulo equivale a su no definición Common Gateway Interface 17

Identificación del cliente REMOTE_ADDR Dirección IP del cliente que invocó al CGI REMOTE_HOST Dirección completa del cliente que invocó al CGI REMOTE_IDENT Si el sistema cliente permite identificar usuarios, indicará su nombre No deberá ser usado nunca como autenticación SCRIPT_NAME URL completo al programa CGI Common Gateway Interface 18

Identificación del servidor SERVER_NAME Nombre del servidor como se indicó en el URL SERVER_PORT El número de puerto del servicio web SERVER_SOFTWARE Nombre y versión del software que implementa el servidor Common Gateway Interface 19

Sobre la conexión I GATEWAY_INTERFACE Versión del protocolo CGI implementado DOCUMENT_ROOT Directorio raíz del servicio Web HTTP_HOST Nombre del servidor Common Gateway Interface 20

Sobre la conexión II HTTP_REFERER URL de la página desde la que se accedió al CGI HTTP_USER_AGENT Identificación del navegador usado por el cliente HTTP_COOKIE Cookie del usuario, si es que tiene HTTPS Activa si el CGI fue invocado a través de un servidor seguro Common Gateway Interface 21

Parámetros de entrada I PATH_INFO Camino extra expresado en el URL del CGI PATH_TRANSLATED Es la concatenación de DOCUMENT_ROOT y PATH_INFO REQUEST_METHOD Método de invocación utilizado QUERY_STRING Parámetros pasados a un CGI mediante GET Common Gateway Interface 22

Parámetros de entrada II CONTENT_LENGTH Tamaño del la información presente en la entrada estándar o NULL Puede venir de un POST o de un PUT de HTTP CONTENT_TYPE Indica el tipo MIME de la información presente en la entrada estándar Si vale NULL, se deberá deducir el tipo, y si no se consigue se asumirá application/octet-stream Common Gateway Interface 23

Qué puede devolver? Todo CGI deberá emitir su resultado por la salida estándar Un documento MIME completo O la localización del documento resultante Common Gateway Interface 24

Devolución de un documento 1ª linea: Content-Type: tipo MIME 2ª línea: en blanco Resto: documento completo del tipo indicado text/plain, image/gif, etc. Content-Type: text/html <HEAD> <TITLE> Título del documento dinámico </TITLE> </HEAD> <BODY>... </BODY> Common Gateway Interface 25

Devolución de una dirección 1ª línea: Location: URL local o remoto 2ª línea: en blanco URL local: el propio servidor lo seguirá Location: /pub/www/ URL remoto: el cliente ha de seguirlo Location: http://www.w3.org/pub/www/ Common Gateway Interface 26

CGI con salida NPH Non Process Header Exige el prefijo nph- El servidor conecta CGI y cliente y no filtra El CGI toma control total de la conexión HTTP Debe incluir al menos una línea indicando el protocolo y el estado del acceso realizado HTTP/1.0 200 Todo fue bien Content-Type:... Common Gateway Interface 27

Direcciones de interés The Common Gateway Interface http://hoohoo.ncsa.uiuc.edu/cgi/ CGI Made Really Easy http://www.jmarshall.com/easy/cgi/ The World Wide Web Security FAQ http://www.w3.org/security/faq/www-security-faq.html Multitud de referencias http://dir.yahoo.com/computers_and_internet/internet/ World_Wide_Web/CGI Common_Gateway_Interface/ Lista de enlaces relativos a CGIs http://users.erols.com/foxdm/cgi.htm CGI Programming 101 http://www.cgi101.com/class/ Common Gateway Interface 28