Ley de cookies: No necesitas aviso de cookies en tu página web

Publicado en Desarrollo a medida hace 3 años y 5 meses. Leído 5457 veces.

imagen destacada

Curiosa las numerosas protestas por los avisos de cookies en las redes sociales y que, sin embargo, la gente enmudezca ante sitios lentos, popups de subscripciones a redes sociales y otras aberraciones. Incluso cuando es algo que nos favorece, ya que, la Ley de Cookies está hecha para preservar nuestro derecho a la intimidad y sin embargo, las otras están sólo para fastidiarnos sin remedio. Esto demuestra de hasta que nivel incordia estos mensajes a nuestros visitantes. Aquí te mostraré como podrás cumplir la ley en tu sitio web y, además, sin molestar a tus visitantes.

El principal problema de la ley de cookies es que nadie se ha parado a leerla[pdf]:

"Los prestadores de servicios podrán utilizar dispositivos de almacenamiento y recuperación de datos en equipos terminales de los destinatarios, a condición de que los mismos hayan dado su consentimiento después de que se les haya facilitado información clara y completa sobre su utilización, en particular, sobre los fines del tratamiento de los datos, con arreglo a lo dispuesto en la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.

Cuando sea técnicamente posible y eficaz, el consentimiento del destinatario para aceptar el tratamiento de los datos podrá facilitarse mediante el uso de los parámetros adecuados del navegador o de otras aplicaciones.

Lo anterior no impedirá el posible almacenamiento o acceso de índole técnica al solo fin de efectuar la transmisión de una comunicación por una red de comunicaciones electrónicas o, en la medida que resulte estrictamente necesario, para la prestación de un servicio de la sociedad de la información expresamente solicitado por el destinatario”

Vaya, hay un párrafo que aclara que no será necesario si el usuario lo acepta mediante parámetros del navegador. Curiosamente, hay un estándar W3C que lleva unos años gestándose para ello: Tracking Preference Expression (DNT).

¿ Sabias que navegadores como IE9(sí, increible ), Firefox, Chrome , Safari u Opera ya lo implementan ?. ¡ Incluso en sus versiones móviles !. Haz clic es los enlaces anteriores para ver como se configura en cada respectivo navegador.

En la actualidad, la preferencia en cuanto a cookies es algo que prácticamente todos los navegadores modernos la soportan como hemos visto. Sin embargo, e inexplicablemente, nadie la aprovecha. Ahora veremos como un desarrollador puede aprovecharse de ello para no tener que poner una aviso de cookies y así mejorar la usabilidad en el sitio web de su cliente. Para ello seguiremos el siguiente recorrido:

  1. Cómo un navegador avisa que permite o no permite rastreo.
  2. Cómo recoger esa información en Javascript y hacemos uso de ella.
  3. Cómo recoger esa información en PHP y hacemos uso de ella.
  4. Nota final y referencias.

Antes de continuar piensa que lo que expongo aquí implica conocimientos de desarrollo a medida. Así que no trates de hacerlo si no eres un desarrollador experimentado.

Cómo un navegador avisa que permite o no permite rastreo.

Como bien sabes, el navegador hace una petición al servidor por cada página web que va a cargar para obtener el código fuente. Esta petición indica, como es obvio, que página web se quiere y de paso el navegador aprovecha para también facilitar información al servidor sobre si mismo, su configuración o su entorno: idiomas soportados, versión, sistema operativo, ... y, por supuesto, si el usuario quiere ser rastreado o no. Veamos un ejemplo de petición bajo este protocolo:

GET /desarrollo/a-medida HTTP/1.1
Host: trasweb.net
DNT: 1

En este ejemplo, el navegador ha hecho una petición al servidor "trasweb.net" solicitando la página web "/desarrollo/a-medida. Además, manda la cadena "DNT: 1" que representa la preferencia de rastreo o DNT( Do Not Track ) especificada por el usuario. Si el navegador no la llega a mandar puede que sea porque el usuario no la configuró( seguramente no conocía esa opción ), bien porque quiere decidir sobre cada página que visita qué hacer, o bien el navegador no soporta configuración de rastreo. En nuestro ejemplo, si que se ha mandado y con valor 1 que quiere decir que el visitante no quiere ser rastreado ( o sea, nada de cookies de rastreo ). Otra opción es que llegue con valor 0, en cuyo caso, al visitante no le importa para nada que lo rastreen y podremos mandarle una cookie.

Cómo recoger esa información en Javascript y hacemos uso de ella.

La mayoría de las notificaciones de avisos de cookies usan Javascript. Por tanto, a este nivel podríamos comprobar el valor de la preferencia DNT y sólo en el caso de que no se hubiera especificado, mostrarle el aviso. El valor de DNT en Javascript se almacena en el atributo navigator.doNotTrack. Veámoslo con un ejemplo.

if( true == navigator.doNotTrack ) {
 alert("Vaya, es una pena que no quieras Cookies. No te molestaré con el aviso");
}else if( false == navigator.doNotTrack ) {
 alert("Vaya, gracias por querer cookies. Así, no te molestaré con el aviso");
}else {
 alert("Lo siento, debo molestarte: ¿ Quieres cookies sí o no ?");
}

Creo que no necesita más explicación.

Cómo recoger esa información en PHP y hacemos uso de ella.

Es importante entender aquí que a la hora de mostrar el aviso aún no se ha debido de mandar cookie alguna al navegador. Esto es algo que nos obliga la ley( recordemos un fragmento de La Ley De Cookies: "...a condición de que los mismos hayan dado su consentimiento después de que se les haya facilitado información clara "). Es decir, primero hay que mostrar el aviso de cookies y sólo en caso de aceptación del aviso, se manda la cookie o se añaden los servicios de rastreo( Google Analytics, contadores de redes sociales, etc ). Esto no es del todo cierto si usamos el estándar DNT, ya que que sólo cuando el usuario no definió preferencia de rastreo en su navegador es cuando tendremos que mostrarle el aviso. Para los otros casos, o le mandamos la cookie o no, según eligió.

Lo recomendable es hacer esta labor bajo PHP, por ser la opción de desarrollo más sencilla. Para consultar el valor de rastreo en PHP, hemos de saber que se almacena en la variable superglobal $_SERVER['HTTP_DNT']. Vemos como sería su uso con un ejemplo.

/** RASTREO: -1: No especificada opción, 0 no quiere rastreo, 1 quiere rastreo */

if (!key_exists("HTTP_DNT", $_SERVER) ) {
    define("RASTREO", -1);
}else {
    define("RASTREO", (int) !$_SERVER['HTTP_DNT']);
}

//....codigo adicional de nuestro proyecto web a medida.....

if(RASTREO) {
       //Si entramos es porque quiere rastreo o hay posibilidad de que lo quiera.
    echo '';

}
//....codigo adicional de nuestro proyecto web a medida.....

Nota final y referencias.

Como se puede ver, es muy fácil quitarle la molestia del aviso de Cookies a nuestros visitantes(sobre todo si tienes un sitio web a medida ) o cumplir la ley íntegramente( ahora, en la mayoría de los sitios no se cumple porque se mandan las cookies antes de mostrar el aviso ). Sin embargo, me temo que este tema no se tomará en serio hasta que la AGPD empiece a presionar en su cumplimiento o a base de competencia entre webs se logre. Si estás interesado en el tema, con lo expuesto en esta entrada tienes más que de sobra. Eso sí, he intentado ser lo más breve posible. Por ello, si quieres profundizar echa un vistazo a estas referencias: * Página en la wikipedia sobre 'Do Not Track' * Borrador de la recomendación de Tracking Preference Expression (DNT) * Sitio por el derecho al no rastreo * Página Mozilla: The Do Not Track Field Guide * Documentación sobre Navigator.doNotTrack

4 comentarios

Yo creo que como en mi caso, muchas personas hemos puesto el aviso de cookies ‘por si acaso’, yo nunca me entere demasiado bien de si debía o no ponerlo, pero ‘por si acaso’ lo pongo y me quito de posibles problemas. Es verdad que daña la usabilidad a parte de que hace empeorar la velocidad del sitio si utilizas un plugin WordPress como es mi caso. Una pena no saber PHP para poder implementarlo en mi WordPress, un saludo

Hola, Fran,

Lo malo es que los “por si acaso” también suelen incumplir la ley. Ya que muestran el aviso después de mandar la cookie y no antes que es como marca la ley. Pero, por suerte, la AGPD no se han puesto duros con el tema. Cuando eso ocurra no habrá más remedio que tirar de soluciones como esta sí o sí.

Antes que eso ocurra, como tu bien apuntas, sería adecuado eliminar el aviso por el daño que hace a la usabilidad y velocidad del sitio.

Gracias por tu aportación, Fran y muchas gracias por tu visita. Un saludo y felices fiestas.

El aviso deberás mostrarlo ANTES de setearle la cookie, ¿no? No soy un experto pero me suena raro-raro que la ley diga que le pongas la cookie y luego le preguntes si quiere cookies.

¿Hay link a algo que diga que hay que mostrar el aviso después de la cookie?

Escrito por Locualo el 08-01-2015 a las 23:55

Hola,

Efectivamente, como comentas, el aviso hay que mostrarlo antes de la cookie. Así está en el post y también en el comentario de respuesta a Fran. No sé en que otra parte viene lo contrario. Si me lo indicas lo cambiaré porque ha debido de ser un despiste mío.

Un saludo y gracias

En el comentario de respuesta a Fran dices:

“Lo malo es que los “por si acaso” también suelen incumplir la ley. Ya que muestran el aviso antes de mandar la cookie…”

Supongo que será un lapsus.

Saludos.

Escrito por DaniFP el 09-01-2015 a las 22:10

Gracias, DaniFP, ahora mismo lo corrijo. Un saludo

Hola Manuel, Buena investigación de fondo y buena explicación práctica. El tema de los navegadores siempre ha sido un poco el patito feo del desarrollo y consultoría web, casi la única preocupación ha sido cuadrar CSS para llegar a un punto medio de web crossbrowser. Pocos desarrolladores se han preocupado por cosas que hacen los navegadores, tal vez no por desidia pero sí por dinámica de mercado y seguramente porque nadie tiene realmente fe en ellos como el “mero medio” que son. No generalizo ni ofendo, menos aún en un ámbito fuera de mi zona de confort, es una apreciación basada en el día a día ;) Me refiero a cosas como el Prefetch, bookmarklets, etc, más de tipo técnico y con consecuencias en usabilidad, entrada de tráfico, pagespeed y por ende, SEO.

Aquí te has desmarcado aprovechando algo que ya existe y es poco conocido y te felicito por ello, porque yo también soy muy amigo del rendimiento y capto tu matiz…

Pero (siempre! jaja) por desgracia dependemos más de la legislación que de la capacidad técnica, elaboro esto:

– Capacidad técnica: corto plazo, victoria rápida, riesgo elevado (administrativo-legal, bugs, dependencias,etc), el riesgo legal es que tendrás que demostrar tu inocencia y no al revés (inversión del principio de presunción de inocencia)* y te gastarás dinero y tiempo afrontando además una multa y eventual cierre de operaciones. Tendrás que demostrar un hecho implícitamente técnico a unas mentes potencialmente atecnológicas… – Legislación: laaargo plazo, no se puede considerar una victoria, solamente seguirás como estás pero probablemente sin intrusiones ni líos burocráticos, pero todavía estás al alcance del exceso de celo, lectura interesada de la legislación, etc…

*http://www.abanlex.com/2014/01/primeras-multas-por-vulnerar-la-ley-de-cookies-explicamos-el-caso/

No voy a decir qué solución es mejor. A la vista de la jurisprudencia solamente hay que leer qué es lo que opina el órgano legislador y su posición sancionadora para saber qué hay que hacer. Seguramente hay una forma de unir la solución técnica con la invulnerabilidad legal.

Suerte, ingenio y un saludo!

Hola, Ricard,

En primer lugar gracias por comentar y exponer tu punto de vista.

Tienes mucha razón en que los navegadores siempre han sido el “patito feo” y eso que son la base para los negocios y creación web. Pese a ello, no les damos importancia. Por mi parte, he tratado de darle el valor que le corresponde pero por la parte que me toca, la técnica. Es por ello que hice este artículo pero también hay dos más sobre como trabajan los navegadores.

También estoy contigo en el tema de la legislación. Creo que esta es la solución más adecuada para la ley de Cookies, aunque como bien dices es difícil de demostrar. Además, esto tampoco es una opción real porque lo que se pretende siempre es rastrear al usuario y con este método que expongo, eso será mucho más difícil.

Veremos como acaba todo. Un saludo

Hola Manuel,En mi versión de Firefox (40) doNotTrack no se comporta como especificas, yo haría el código así:

if("1"==navigator.doNotTrack){ alert("Vaya, es una pena que no quieras Cookies. No te molestaré con el aviso"); }elseif("0"==navigator.doNotTrack){ alert("Vaya, gracias por querer cookies. Así, no te molestaré con el aviso"); }else{ alert("Lo siento, debo molestarte: ¿ Quieres cookies sí o no ?"); } Aunque no he conseguido ver nunca el valor 0, ya que si desactivo el DNT, me pone como “unespecified”, como si nunca lo hubiera marcado. Es decir, siempre indica que o no quieres rastreo o no lo indicas.

Escrito por Alvaro el 01-06-2015 a las 08:40

Hola Álvaro nuevamente,

Piensa que es un borrador y que está en constante cambio. Quizás hayan cambiado las especificaciones, no lo sé. Ahora la verdad es que tengo la cabeza colapsada, de todos los mensajes que estoy recibiendo por todos lados. En un hueco lo miro y te digo, ¿ vale ?.

Gracias por tu aportación, Álvaro.

Deja un comentario

Puedes usar Markdown para formatear tu comentario.

Este sitio utiliza cookies propias y de terceros para mejorar tu experiencia con el sitio web. Al continuar con la navegación consideramos que acepta su uso.