JTagua

Inicio » Cookies » Tutorial de JSP (15): Gestión de Cookies.

Tutorial de JSP (15): Gestión de Cookies.

Licencia

Creative Commons License

Visitas:

  • 804.956 hits

Las cookies son pequeños bits de información textual, que un servidor web (o un contenedor de aplicaciones tal como Tomcat) envía a un navegador cliente (tal como firefox) para identificarlo; el navegador luego devuelve en su petición esa cookie (o cookies) cuando visita nuevamente ese sitio web. De esta manera el servidor, a través de una página jsp o servlet, lee las cookies que le envió previamente en una conexión anterior.

Esta técnica permite al cliente ciertas ventajas:

Identificar a un usuario durante una sesión de comercio electrónico:
Si alguna vez ha utilizado un carrito de compras (Shopping Cart), habrá notado que cuando selecciona un ítem, lo añade a su carrito. Dado que las conexiones HTTP se cierran después de que cada pagina se envía, cuando el usuario selecciona un nuevo ítem para su carrito, ¿como sabe el sistema de tienda virtual que ese usuario que acaba de conectar de nuevo ya tiene iniciada una compra con uno o mas item en su carrito?… las cookies.

Evitar la autentificación constantemente:
Muchos sitios web grandes, requieren un registro para utilizar sus servicios (Twitter, SlideShare, Facebook, Yahoo! Mail, etc), sería un grave inconveniente, que cada vez que el usuario realiza una acción (cambiar de página por ejemplo) se pregunte constantemente por el usuario y la contraseña a un usuario si ya se ha autentificado al ingresar por primera vez. Las cookies permiten evitar esto.

Personalizar un sitio:
iGoogle es un ejemplo perfecto de la personalización de un sitio. iGoogle, entre otras cosas, usa una cookie para “recordar” que widgets le agregaste, cuantas pestañas tienes, etc…

Publicidad personalizada:
Un motor de búsqueda, como Google, puede mantener una pista de las preferencias de un usuario a lo largo del tiempo, de esta forma, la publicidad que se le muestra a ese usuario, estará enfocada a sus preferencias de búsqueda.

¿Y la seguridad?…

Las cookies no se “interpretan” o ejecutan en un sistema, por lo que no se puede insertar virus en ellas para comprometer la integridad del sistema. Los navegadores, generalmente sólo aceptan 20 cookies por sitio, además un navegador nunca poseerá más de 300 cookies en total, y cada cookie esta limitada a un tamaño de 4 KB, así que no se pueden usar para llenar el disco duro de un cliente (especialmente con el tamaño de los discos duros modernos).

Sin embargo, aunque las cookies no presentan una amenaza a la seguridad, si pueden presentar una seria amenaza a la privacidad. Pero más que culpa de la cookie en si, los problemas de privacidad radican en programadores con prácticas poco seguras.

El funcionamiento esquemático de las cookies es el siguiente:

Las cookies en Java son objetos de la clase Cookie que se encuentra en el paquete javax.servlet.http

Conviene recordar:

A)No utilizar caracteres tales como []()=,””/?@:; o espacios en blanco.

B)Las cookies hay que enviarlas al cliente en la cabecera de la respuesta y por tanto es necesario no haber escrito absolutamente nada en el cuerpo del mensaje previamente.

Ejemplo:

En este ejemplo vamos a

1.-Crear un objeto cookie a partir de la clase Cookie con

Cookie Galleta = new Cookie(NomCookie, ValCookie);

donde “NomCookie” será el nombre de la cookie y “ValCookie” será el valor asociado a esta cookie.

2.-Vamos a fijar su fecha de caducidad/expiración por medio del método,

Galleta.setMaxAge(1*365*24*60*60); //Expira dentro de un año.

Galleta.setMaxAge(-1); //Expira al finalizar la sesión del cliente/navegador.

3.- Vamos a eliminar una cookie haciendo que su expiración sea cero, con

Galleta.setMaxAge(0); //El cliente/navegador eliminará la cookie en la siguiente llamada.

4.- Vamos a limitar el directorio donde se encuentra la página jsp o servlet que tendrá acceso a las cookies, con

Galleta.setPath(“/”); //Directorio por defecto desde donde se capturarán las cookies.

3.-Vamos a enviar esta cookie al solicitante de la página a través del objeto implícito response con

response.addCookie(Galleta);

5.-Vamos a recuperar todas las posibles cookies almacenadas en el cliente con,

Cookie[] galleta = request.getCookies(); //Recuperar todas las cookies

Cookie[] galleta = request.getCookies(“kuki”); //Recuperar una cookies llamada kuki

Para ello inicie una nuevo proyecto en el IDE NetBeans y llámelo por ejemplo, GestionCookies, sustituya la plantilla de index.jsp por el siguiente código

este código genera un formulario en la forma,

Como puede verse, existen cuatro botones tipo “submit” asociados al mismo identificador o “name”, los cuatro tienen valores (value) distintos, a saber: Crear, Visualizar, Modificar y Eliminar. Es precisamente este botón quien determinará el bloque de código que es necesario ejecutar para resolver los cuatro procesos.

Puede verse también en index.jsp, que capturamos un parámetro llamado “men” que envían cada uno de los procesos anteriores para informar que se ha ejecutado con éxito o que no ha podido realizarse la operación. Y así, aparecerán mensajes tales como:

A) En el caso  “Crear” cookie (se necesita el nombre y el valor, que no están comprobados, aunque no habría técnicamente ningún problema en crear un cookie sin nombre y sin valor), aparecerá en el caso favorable el mensaje por ejemplo

Creada cookie JuanTagua con valor 2010

B) En el caso  “Visualizar”  cookies (No se necesita ni el nombre ni el valor), aparecerá, por ejemplo,

En la pantalla anterior podemos ver la cookie que se genera automáticamente en cada sesión en JSP además de la cookie generada anteriormente en la opción anterior.

C) En el caso  “Modificar” cookie (se necesita el nombre y el nuevo valor al que se desea modificar la cookie), aparecerá en el caso favorable el mensaje por ejemplo,

Modificada cookie JuanTagua

y en el caso de que no exista la cookie cuyo valor se desea modificar, aparecerá

No ha podido modificarse la cookie porque no existe.

D) En el caso  “Eliminar” cookie (se necesita el nombre de la cookie que se quiere eliminar), aparecerá en el caso favorable el mensaje por ejemplo,

Eliminada la cookie JuanTagua

y en el caso de que no exista la cookie que se desea eliminar, aparecerá

No ha podido modificarse la cookie porque no existe.

 

Finalmente, cualquiera que sea la opción elegida, tal como puede ver en la etiqueta <form …, siempre se reenvía el formulario a la página GestionCookie.jsp que es la encargada de realizar las operaciones pertinentes.

El código de GestiónCookie.jsp, es el siguiente:

Consideraciones Finales:

Se deja al lector, como ejercicio,

1.-Que controle la existencia o no de entrada tanto en la caja de texto Nombre como en Valor de la cookie según los casos.

Buscar una cookie en el navegador Firefox:

  • Abra el navegador Firefox. Seleccione Herramientas y luego Opciones en el menú del programa. Elija la pestaña Privacidad. Localice la parte del panel titulado “eliminar cookies de forma individual”.

  • Introduzca en la caja de texto “Buscar” el dominio que envió la cookie. Si está desarrollando un proyecto jsp o servlet escriba “localhost”.

  • Ver las cookies individual obtenida por dominio pulsando el signo + junto al nombre del sitio web y su carpeta. Algunas cookies tienen nombres fácilmente identificables, mientras que otras son una serie de letras al azar, números y símbolos.

  • Compruebe el nombre, Valor/contenido, Servidor, Ruta/path y fecha de expiración de la cookie seleccionada.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: