HTTP, el protocolo que se usa para ver páginas web, es un protocolo sin estado, lo que quiere decir que cada petición es independiente de las demás, así que hace falta algún mecanismo que permita relacionar todas las peticiones, es decir, las cookies.
Cuando inicias sesión en una página, digamos friendface.com, pones tu nombre de usuario y tu password y le das a enviar (eso es una petición), vas al perfil de un amigo (otra petición). Si no se relacionasen las peticiones, no podrías ver el perfil de tu amigo, porque para el servidor, al ser independientes las peticiones, no habrías iniciado sesión. Esto mismo se aplica cuando te conectas a la página del banco, a la de gmail o a cualquier cosa.
Cuando se hace la primera petición a un sitio, éste nos devuelve su respuesta, un documento HTML normalmente, junto con una identificador aleatorio que debería ser único, es decir, la cookie. En cada petición posterior a ese mismo sitio, le adjuntamos la cookie, de forma que sepa que esa petición está relacionada con la primera. Por eso precisamente no es necesario poner login y password en cada petición.
El problema en sí
Entonces tenemos que una cookie sirve para identificar todas las peticiones que se hacen bajo una sesión, de forma que se entiende que se trata de la misma persona, haciendo todas esas peticiones.
Pero, ¿y qué pasa si consigo la cookie de friendface.com de otra persona?. Efectivamente, podrías hacer peticiones a friendface.com y hacer creer al servidor de friendface.com que eres esa otra persona, teniendo acceso a toda su información.
Para evitar que las contraseñas puedan ser vistas en la red, se utilizan protocolos de cifrado (HTTPS por ejemplo) para enviarlas, pero el tráfico que se genera a partir del momento de iniciar sesión, van en claro, por lo que la cookie va en claro, permitiendo acceder a la información crítica.
Hasta aquí, digamos que sólo un 0,1% de la población mundial tiene capacidad técnica para hacer este tipo de cosas, despues de una hora de leer por internet, si no fuera porque van saliendo herramientas que te permiten hacerlo de forma automática con, literalmente, dos clicks y sin tener ni idea de lo que estás haciendo en realidad.
Un ejemplo
Está Alice, la mujer de Bob en una cafetería con su portatil usando la wifi y decide conectarse a friendface.com. Su clave va encriptada por HTTPS, si, pero la cookie que identifica su sesión no. Trudy que es un poco travieso está también con su portatil y, puesto que ambos están usando la misma wifi y los datos viajan en claro por la red, Trudy puede robar la cookie de friendface.com de Alice y se hace pasar por ella, cotilleando las cartas de amor que le escribe a Bob y dejando comentarios en sus fotos insinuándole que se está poniendo gordo y feo.
Conclusión
La única forma de que alguien te robe las cookies, como le ha pasado a la pobre Alice, es que se cumplan una serie de requisitos
- Tanto el ladrón como tú uséis un medio compartido para conectaros.
- Que la conexión vaya en claro, es decir, no use HTTPS.
- Que haya alguien con mala idea cerca.
![]() |
| Maaaal! |
Lista de sitios web a evitar desde conexiones públicas:
- amazon
- basecamp
- bitly
- cisco
- cnet
- dropbox
- enom
- evernote
- flickr
- foursquare
- github
- gowalla
- hackernews
- harvest
- live
- nytimes
- pivotal
- sandiego_toorcon
- slicemanager
- tuenti
- tumblr
- wordpress
- yahoo
- yelp




