cookies, esas medio desconocidas (2)
Quizas el capitulo anterior se quedo un poco corto para la gran mayoria de lectores (cuando lectores tiende a 20) y algunos incluso asi me lo hicieron saber. Quise con el post anterior no hacer como en anteriores entradas donde creo que quizas doy por sabidas demasiadas cosas y la gente que pueda llegar a leerme andara un poco perdida. Hoy eso no nos va a pasar porque nos vamos a meter mas en faena y a programar un poquito incluso.
Hoy vamos a hablar sobre el tema de cookies seguras, o lo que es lo mismo, aquellas que tienen activadas su propiedad Secured. Estas cookies tienen la peculiaridad de que solo se envian si el canal de comunicacion es seguro, esto es, el protocolo usado para transferirlas esta cifrado mediante SSL.
Esto es de gran utilidad en paginas que requieren de una alta seguridad, tales como bancos, bancos y mmmmm ¿bancos?. En realidad deberiamos de marcar nuestras cookies como seguras siempre que asi lo requiera nuestra aplicacion, que sera cuando contengan datos importantes o sean de sesion.
Si nos logamos en una aplicacion en la cual navegamos siempre por zonas seguras no deberiamos de tener problemas en que nuestra cookie este marcada como tal o no, pero si desde la zona segura se nos redirige en algun momento hacia zona no segura nuestra cookie se enviara, poniendo en peligro nuestros datos.
Esto que parece tan logico y normal hay algunos bancos que no lo entienden:
En este caso las cookies no estan marcadas como seguras, aunque el hecho de que el valor Host sea un subdominio del principal hace imposible que se envien fuera de este. Sin embargo, aunque esto podria ser un sustitutivo de la marca segura para las cookies, no lo seria si el servidor, ademas de escuchar en el puerto 443 (HTTPS) escucha en el puerto 80 (HTTP).
Sin embargo hay otros bancos donde la zona privada esta en el mismo dominio que el resto de la aplicacion web, lo que hace que la cookie viaje hacia cualquier parte de la pagina que visitemos:
Esto es un evidente fallo de seguridad por parte de la entidad bancaria, pues cualquiera podria engañar a un usuario logado en la aplicacion para que hiciera clic sobre un enlace HTTP y capturar su cookie de sesion.
Si entramos en esta aplicacion mediante HTTP en lugar de HTTPS se nos redigira automaticamente hacia una zona segura, pero esto no nos vale, pues la peticion ya esta realizada (y la cookie enviada).
rec_sol = noese(document.location.href); if (rec_sol == "http://www.XXXXXXX.es/") top.location.href="https://www.XXXXXX.es/index.jsp";
¿Y realmente es tan dificil establecer nuestras cookies como seguras? Vamos a ver como lo hariamos en PHP y en ASP.Net:
En PHP la creacion de cookies se hace mediante la funcion setcookie(); que recibe un monton de parametros.
setcookie("Cookie segura", "Dato privado!!", 0, "/", "www.equilibrioinestable.com", true);
En ASP.Net es igual de facil, disponemos del objeto HttpCookie que tiene la propiedad Secure, la cual recibe un booleano y que si lo asignamos a true pondremos nuestra cookie como segura.
Y con esto terminamos la parte de cookies seguras, para el proximo ¿numero? hablaremos y practicaremos con la propiedad httpOnly.