HTTP, CGI, Applets y Servletsyudith/docencia/ci-4821/http_cgi_applets... · cuyo valor ASCII sea...
Transcript of HTTP, CGI, Applets y Servletsyudith/docencia/ci-4821/http_cgi_applets... · cuyo valor ASCII sea...
Sistemas de Operación II CI-4821 Sep-Dic 2006
Mercedes Martínez 00-33042Aixbel Martínez 01-34114
Mario Felaco 02-34888José Luís Castillo 01-33691Yonathan Ledo 01-34033
HTTP, CGI, Appletsy Servlets
HTTP
Este protocolo de transferencia es el sistema mediante el cual se envían las peticiones para acceder a una página web así como también las respuestas de la misma.
Algunas características del mismo:� Es un protocolo sin estado.� Esta basado en el modelo Cliente-Servidor.� El puerto por defecto mediante el cual realiza las comunicaciones es el 80.
Introducción
HTTP (HyperText Transfer Protocol)
Introducción
Ejemplo de comunicación en HTTP:
Acceder la página www.host.com/index.html:
�Se abre el socket de comunicación en el puerto 80.�Se envía un mensaje como el siguiente:
GET /index.html HTTP/1.0
From: [email protected]
User-Agent: HTTPTool/1.0
[Línea en blanco]
Introducción
Ejemplo de comunicación en HTTP:
La respuesta del servidor es de la siguiente forma:
HTTP/1.0 200 OK
Date: Fri, 31 Dec 2003 23:59:59 GMT
Content-Type: text/html Content-Length: 1221
<html>
<body>
<h1>Página principal de tuHost</h1>
(Contenido)
. . .
</body>
</html>
CGI (Common Gateway Interface)
Protocolo que proporciona una interfaz o pasarela entreun servidor de información y un proceso externo.
Su función principal es la de añadir una mayor interacción a los documentos web que por medio del HTML se presentan de forma estática.
Utilizando el protocolo CGI, un cliente web puedeespecificar un programa, conocido como Script CGI, como objeto web de destino de una petición HTTP.
CGI Common Gateway Interface
Definición
CGI Common Gateway Interface
Funcionamiento
CGI Common Gateway Interface
Ejemplo
Es un directorio especial, que contiene
los scripts, configurado dentro del servidor
http. El servidor conoce que este directorio
contiene ejecutables que deberán ser
ejecutados y su salida deberá ser enviada
al navegador del cliente.
CGI Common Gateway Interface
/cgi-bin
CGI utiliza variables de entorno que son
escritas por el servidor HTTP para pasar
información sobre las peticiones a los
programas externos.
Algunas de estas variables son:� REUQEST_METHOD: tipo de método con el que se ha realizado la
petición.
� QUERY_STRING: contiene la cadena de caracteres codificada.
� CONTENT_TYPE: el tipo de contenido de los datos.
� CONTENT_LENGTH: la longitud de la cadena de interrogación en
número de bytes.
CGI Common Gateway Interface
Variables de Entorno CGI
CGI Common Gateway Interface
Formato de la cadena:
nombre1=valor1&nombre2=valor2&nombre3=valor3“
Así que sólo hay que dividir donde están los signos ‘&’ y
‘=’, y luego hacer dos cosas a cada nombre y valor:
1.Convertir todos los signos ‘+’ a espacios.
2.Convertir todas las secuencias ‘%xx’ al valor del carácter
cuyo valor ASCII sea ‘xx’ en hexadecimal. Por ejemplo
convertir ‘%3d’ a ‘=’.
Como se envían los datos
Existen dos formas de enviar información, por medio
de GET y POST.
GET
envía la información dentro del URL separando los campos con
signos de interrogación '?' antes de la información.
POST
envía la información directamente al servidor, haciéndolo invisible
en el URL
CGI Common Gateway Interface
Formas de enviar información
CGI Common Gateway Interface
Ejemplo GET
CGI Common Gateway Interface
Ejemplo POST
Riesgos
Vulnerabilidad
Recomendaciones
CGI Common Gateway Interface
Seguridad en CGI
Applets
Definición
Applets
Pequeña aplicación de software que corre dentro del contexto de otro programa.
Generalmente tienen funcionalidades limitadas queestan más allá de las del programa en donde corren.
Debe correr en un contenedor en el programa anfitrión, a través de un plugin.
Diferencias entre applet y script
� El applet corre en el lado del cliente
� El applet generalmente posee una interfaz gráfica con el usuario
� Es compilado, mientras que los scriptson interpretados
Applets
Ejemplos de applets
� Java applets
� Flash
� Reproductores de video/sonido (Quicktime, WMP, Real)
Applets
Ventajas
� Independiente de plataformas
� Soportado por la mayoría de los browsers
� Se puede guardar en caché, acelerando el tiempo de carga
� Permisos limitados predeterminados
� Con permiso, puede tener acceso a la máquina que lo está corriendo
Java Applets
Uso//Sección de importaciones
public class NombreDelNuevoApplet extends Applet {// Aquí se declaran las variables de estado (public y
private)
/*Los métodos para la interacción con los objetos se declaran y definen aquí*/public void MetodoUno( parámetros ) {/* Aquí viene para cada método, el código Java quedesempeña la tarea.Qué código se use depende del applet*/}
}
Java Applets
Llamadas
<APPLET CODE="SuCodigo.class" WIDTH=100 HEIGHT=50> </APPLET>
Llama al applet SuCodigo.class y establece su ancho y alto inicial.
Cuando se acceda a la página Web donde se encuentre incluida la línea, se ejecutará el byte-codecontenido en SuCodigo.class, obteniéndose el resultado de la ejecución del applet en la ventana del navegador, con soporte Java, que se esté utilizando.
Java Applets
Desventajas
� Requiere el plugin de Java
� JVM tiene que correr, aumentando el tiempo de carga
� Se tiene que bajar de internet
� Se dificulta diseñar una buena interfaz gráfica
� Si se “guinda” JRE se lleva el browser y posiblemente el sistema
Java Applets
Servlets
Servlets
� Definición
� Contenedor o motor de Servlets
� Arquitectura
� Ciclo de Vida
� Modelos de subproceso y problemas con Threads
� Estados de los clientes
� Ventajas, Desventajas y Seguridad
Definición de Servlet
� Componente Web basado en Java
� Genera contenido dinámico
� Opción ante ASP, PHP, Python y JSP (caso particular de servlet).
� JSR 154
Contenedor o motor de servlets
� Provee servicios de red para atender las peticiones y respuestas que se envian
� Debe dar soporte a los protocolos HTTP/1.0, HTTP/1.1 y HTTPS
� Implementan la interfaz servletContext
Arquitectura
� Implementa la interfaz java.servlet.Servlet o hereda de una clase conveniente para el protocolo deseado, por ejemplo, java.servlet.HttpServlet.
� Para efectuar la interacción con los clientes recibe dos objetos:
� Un ServletRequest, que encapsula la comunicación desde el cliente al servidor.
� Un ServletResponse, que encapsula la comunicación de vuelta desde el servlet haciael cliente.
Arquitectura
Ciclo de vida
Ciclo de vida
Ciclo de vida
public ShutdownExample extends HttpServlet { private int serviceCounter = 0; ...protected synchronized void enteringServiceMethod() {
serviceCounter++;}protected synchronized void leavingServiceMethod() {
serviceCounter--;}protected synchronized int numServices() {
return serviceCounter; }}
Ciclo de vida
protected void service(HttpServletRequest req,HttpServletResponse resp)
throws ServletException, IOException {
enteringServiceMethod();try {
super.service(req, resp); }finally {
leavingServiceMethod(); }
}
Ciclo de vida... //Access methods for shuttingDownprotected setShuttingDown(Boolean flag){
shuttingDown = flag; } protected Boolean isShuttingDown() {
return shuttingDown; }
public void destroy() {if (numServices() > 0) {
setShuttingDown(true); }while(numServices() > 0) {
try {Thread.sleep(interval);}
catch (InterruptedException e) { } }
}
Ciclo de vida
public void doPost(...) {...for(i = 0; ((i < lotsOfStuffToDo) && !isShuttingDown()); i++) {
try {partOfLongRunningOperation(i);
} catch (InterruptedException e) { }}
}
Modelos de subproceso. Problemas con Threads.
� Problemas con las Variables de Instancia en accesos concurrentes.
� Solución: evitar las variables de instancia y
utilizar variables locales definidas dentro del
método service().
� Otra solución: los servlets pueden cambiar
este comportamiento si implementan
singleThreadModel.
Estados de los clientes
� 2 mecanismos:� Sesiones HTTP mediante la interfaz
HttpSession.
� Cookies.
Ventajas y Desventajas
� Rendimiento y Desempeño:
� En comparación con los CGI ejecutan con
mayor rapidez ya que están basados en el
modelo de Threads.
� Simplicidad y Portabilidad:
� se ejecutan en como cualquier otra aplicación
java en una maquina virtual, en un entorno de
servidor controlado y sólo necesita de http
básico para comunicarse con los clientes
Ventajas y Desventajas
� Desarrollo:
� el programador tiene acceso a la tecnología
Java y todas sus facilidades.
Seguridad
� Seguridad Declarativa
� Seguridad Programática:
� Se apoya en 3 métodos:� getRemoteUser
� isUserInRole
� getUserPrincipal
� Roles
Seguridad
� Autentificaciones:
� Autentificación Básica HTTP.
� Resumen de Autentificación HTTP.
� Autentificación de Clientes HTTPS.
� Autentificación Basada en Formularios.