Implementación de las cookies
Creando una cookie
La transferencia de páginas Web sigue HTTP. A pesar de las cookies, los navegadores piden una página de servidores para enviarles un texto corto llamado HTTP. Por ejemplo, para acceder a la página http://www.w3.org/index.html, los navegadores se conectan al servidor www.w3.org mandando una petición que se parece a la siguiente:
El servidor responde al enviar la página pedida precedida por un texto similar, llamado encabezado HTTP. Este paquete puede contener líneas peticionando al navegador para que guarde cookies:
La línea Set-cookie es solo enviada si el servidor desea que el navegador guarde cookies. De hecho, es una petición al navegador el guardar la secuencia name=value y enviarla de vuelta en cualquier otro futuro pedido del servidor. Si el navegador soporta cookies y las cookies están admitidas, cada petición de cada página subsecuente al mismo servidor va a contener la cookie. Por ejemplo, el navegador pide la página http://www.w3.org/spec.html enviando al servidor www.w3.org un pedido que se asemeja al siguiente:
Este es un pedido para otra página del mismo servidor, y se diferencia del primero porque contiene la
secuencia que el servidor había previamente enviado al navegador. Por donde, el servidor sabe que este pedido
está relacionado con el previo. El servidor responde al enviar la página pedida, posiblemente añandiendo otras
cookies también.
El valor de la cookie puede ser modificada por el servidor al enviar una nueva línea Set-Cookie: name=newvalue
en respuesta al pedido de la página. El navegador entonces reemplaza el viejo valor con el nuevo.
La línea Set-Cookie no es típicamente generada por el servidor HTTP en sí, sino por un programa CGI.
El servidor HTTP solo envía el resultado del programa (un documento precedente por el encabezado contiendo
cookies) al navegador.
Las cookies también pueden ser puestas por JavaScript o scripts similares en el navegador. En JavaScript, el
objeto document.cookie es usado para este propósito. Por ejemplo, la instrucción document.cookie = "temperature=20"
crea una cookie de nombre temperature y valor 20
Caducidad
Cuando las cookies han caducado, estas no son enviadas al navegador; por lo tanto, la caducidad de las cookies puede ser pensada como un límite de tiempo en el que una de ellas puede ser usadas. La cookie puede luego ser renovada después de que este límite haya pasado. Algunos sitios prefieren que las cookies caduquen en tiempos más cortos por razones de seguridad. Las cookies no se envían al servidor bajo estas condiciones:
#1 - al finalizar una sesión de usuario: por ejemplo, cuando se cierra el navegador (si esta no es persistente).
#2 - Se ha fijado una fecha de caducidad y esta ha pasado.
#3 - La fecha de caducidad es cambiada a una fecha anterior (por el servidor.
#4 - La fecha de caducidad se borra por orden del usuario.
Nota: La tercera condición permite que un servidor elimine una cookie explícitamente.
Autenticación
Muchos servidores o páginas web utilizan las cookies para reconocer usuarios que ya se hayan autenticado o para personalizar páginas web dependiendo de las opciones que un usuario seleccione. Por ejemplo, esto puede suceder cuando:
#1 - El usuario escribe su nombre y contraseña, los cuales son enviados al servidor
#2 - El servidor verifica la información proporcionada, y si es correcta devuelve una página de confirmación con
una cookie, guardando así esta información en la computadora del usuario.
#3 - Cuando el usuario visita una página la cual pertenece al servidor, este verifica la existencia de las cookies
y luego comprueba si las cookies existentes son iguales a las que han sido guardadas en el servidor. Si hay
coincidencias, el servidor puede identificar el usuario que solicitó la página.
Este es uno de los métodos de autenticación más habituales, usados por Yahoo!, Wikipedia, o Facebook.
Otro uso de las cookies se refiere al seguimiento de una ruta (camino) que un usuario toma cuando navega a través de páginas web de un servidor o sitio. Esto también puede ser obtenido cuando se usa la dirección IP de una computadora, aunque las cookies tienen mejor precisión. Esto se puede realizar de la siguiente manera:
#1 - Si el usuario visita una página web pero la solicitud no contiene una cookie, el servidor asume que esta es la
primera visita a esa página; el servidor crea una serie de caracteres aleatorios, que luego son enviados como una
cookie además de la página solicitada.
#2 - De ahora en adelante, la cookie es enviada al servidor automáticamente por el navegador cada vez que una página
se ha solicitado. El servidor envía una página como siempre, pero la fecha y hora son guardadas en un registro de la
visita con la cookie.
Si luego se lee el registro, es posible identificar cuando, quién, y la secuencia en la cual un usuario accedió a que páginas.
Cesta
Algunas páginas web, en particular páginas de compra o venta de productos permiten que usuarios guarden objetos en una "cesta virtual" incluso si ellos están fuera de sesión. Una lista de estos objetos puede ser almacenada en una cookie. Por ejemplo, cuando el usuario agrega un elemento a su cesta virtual, el servidor agrega el nombre de este objeto a la cookie. Sin embargo, éste es un método muy inseguro ya que puede que la cookie sea fácilmente alterada por otro usuario. Una mejor forma podría ser que se genere una cookie de "seguimiento" aleatoria y luego usarla como una referencia en el servidor.