SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
¡Cookiegeddon!
Adiós a las cookies de terceros y cómo afectará a tu software
Francisco Javier Barrena
● Now: Principal Engineer at Labster Inc.
● Former CTO of Kyso (now open source)
● Former Head of Engineering and Head of Cybersecurity Research Group
at ITI
● Former Professor at Big Data Analytics Master - UPV
● Former Professor at Specialist ENS Course - Univ. Mondragón
● Teacher (+30 courses)
● Speaker (+40 talks)
● +14 years of professional experience
https://fjbarrena.dev
Francisco Javier Barrena
El viaje
- Francisco Javier Barrena
- Francisco Javier Barrena
Francisco Javier Barrena - @dogdeveloper
where the fuck are my cookies?
- Francisco Javier Barrena
● Desde el 4 de enero de 2024, Google empezó a testear con
usuarios reales sus nuevas features sobre privacidad,
deshabilitando el uso de cookies de terceros (Third Party
Cookies) para el 1% de los usuarios
● Del 4 de enero al 1 de Abril de 2024 se considera periodo
de gracia
● A partir del 1 de Abril, Google empezará a aumentar el % de
usuarios con las cookies de terceros deshabilitadas por
defecto, hasta llegar al 100% a finales de año
Cookie
- Francisco Javier Barrena
@DogDeveloper - Francisco Javier Barrena
- Francisco Javier Barrena
@DogDeveloper - Francisco Javier Barrena
.400.000.000
● Ene. 2021 - Mar. 2022. EL ARMAGGEDDÓN
○ Refactor de la API en Typescript con NestJS - ACIERTO
○ Refactor del modelo de datos siguiendo patrones SOLID -
ACIERTO
○ Deployment en plain Kubernetes - ACIERTO
○ Ni de coña pudimos refactorizar el front
○ Se pone en staging en el cliente en tiempo
○ La calidad del producto no es la que nos gustaría, pero es
suficiente
● Mar. 2022 - Jun. 2022. Aquí la liamos un poco
○ El cliente empieza a pedir cambios
○ Pero nosotros nos volvemos locos y empezamos a desarrollar
features a cascoporro - ERROR
El viaje
- Francisco Javier Barrena
@DogDeveloper - Francisco Javier Barrena
un poco de historia
- Francisco Javier Barrena
● Las cookies fueron creadas en 1994 por un empleado de
Netscape, mientras implementaba un carrito de la compra
● No quería guardar la información del carrito en el servidor,
prefería guardarlo en lado del cliente, para ahorrarse unos
duros en el servidor
● Internet Explorer no tardó en seguir a Netscape en 1995
● Y en 1996 se publicó el primer artículo acerca de los problemas
de privacidad que las cookies traían consigo
- Francisco Javier Barrena
como funcionan las cookies?
- Francisco Javier Barrena
● Imaginemos que tenemos un sitio web que requiere a sus
usuarios que se logueen
● Al loguearse, envían una petición HTTP con su usuario y
password al servidor, que autoriza o deniega el acceso
como funcionan las cookies?
- Francisco Javier Barrena
● Y aquí es donde está el matiz… el protocolo HTTP es
stateless
● Esto significa que cuando hagamos otra petición al mismo
servidor, éste habrá olvidado quién eres, y por lo tanto,
volverá a preguntarte quién eres
● Esto es extremadamente time-consuming e ineficiente
Fuente: https://www.youtube.com/watch?v=QWw7Wd2gUJk
como funcionan las cookies?
- Francisco Javier Barrena
● Aquí es donde entran las cookies. Siguiendo el mismo flujo
descrito anteriormente, el servidor, además de autorizarte,
envía una cookie a tu navegador
● Esta cookie se almacena en tu ordenador, y se “reenvía”
automáticamente en cada petición subsiguiente que hagas
al mismo sitio web
● Estas cookies contienen un identificador único que permiten
al servidor “recordar” quién eres (token JWT, etc.)
que es una cookie de terceros?
- Francisco Javier Barrena
● Explicar que es una cookie de terceros
como funcionan las cookies?
- Francisco Javier Barrena
● Las cookies también se pueden usar para más cosas, como
por ejemplo almacenar settings, recordar en qué capítulo y
segundo te quedaste viendo una serie, etc.
● Así que las cookies son un mecanismo útil que “añade”
memoria a un protocolo que por diseño es stateless
qué limites tienen las cookies?
- Francisco Javier Barrena
● Las cookies además, ya tienen limitaciones,
principalmente
○ Número máximo de cookies por browser/domain
■ Safari - 600
■ Chrome - 180
■ Firefox - 150
■ Opera - 60
■ ¿ Y Edge?
- Francisco Javier Barrena
- Francisco Javier Barrena
- Francisco Javier Barrena
qué limites tienen las cookies?
- Francisco Javier Barrena
● Las cookies además, ya tienen limitaciones,
principalmente (cont.)
○ Máximo 4096 bytes de datos
○ Y la más importante, las cookies están acotadas al
dominio que las creó
○ Es decir, si yo creo una cookie en
https://fjbarrena.dev las cookies solo se adjuntarán
a las peticiones a https://fjbarrena.dev
- Francisco Javier Barrena
entonces cuál es el problema?
- Francisco Javier Barrena
● Si una cookie de un dominio no puede ser leído por otro
dominio… ¿cómo nos trackean? ¿cómo puede Google
saber a qué sitios hemos visitado?
● Todo el proceso de tracking empieza cuando entras a tu
cuenta de Google (o de Facebook, o de Twitter,
ponga-aquí-la-gran-empresa-que-usted-quiera)
● Como ya hemos visto, Google guarda una cookie en tu
navegador en su proceso de login, hasta aquí nada fuera de
lo normal
entonces cuál es el problema?
- Francisco Javier Barrena
● Esta cookie es scoped, es decir, está bindeada al dominio
google.com, por lo que nadie excepto Google va a poder
leerla
● Ahora imaginemos que sales de Google, y visitas una tienda
online para comprar unos Plenny Shake, tus batidos
nutricionales 100% Veganos que sustituyen tu desayuno,
comida y cena
● Y de repente…
- Francisco Javier Barrena
entonces cuál es el problema?
- Francisco Javier Barrena
● Si la cookie que haya puesto https://esjoy.es solo la puede
leer https://esjoy.es porqué carajo ahora entro en Youtube y
me sale un fucking anuncio de Plenny Shake
entonces cuál es el problema?
- Francisco Javier Barrena
● No, no nos han engañado, pero han sido muy listos. Google
no puede leer la cookie de la tienda online, ni viceversa, el
scope lo impide, pero imaginemos que la tienda online
tiene Google Analytics, o un botón de compartir en
Facebook, o un tweet (me niego a llamarlo ‘post’)
embebido…
● Para usar Google Analytics, o lo que sea, el navegador
necesita descargarse código del dominio de Google
● Como ya hemos visto, todas las cookies se mandan
autoḿaticamente al dominio, y así es como se manda la
cookie de Google a través de esjoy.es
que es una cookie de terceros?
- Francisco Javier Barrena
● Explicar que es una cookie de terceros
y ese es el truco…
- Francisco Javier Barrena
● El truco es sencillo… convence al mayor número de sitios
web posibles de que pongan en algún sitio un trocito de tu
código en su página…
○ Un botón de “Me gusta”
○ Un “Logueate con Google”
○ Una librería de analítica web
○ Una librería para poner algún anuncio y poder
monetizar tu blog
○ Etc.
● Y qué curioso que todas estas cosas sean “gratis”...
- Francisco Javier Barrena
como de grave es?
- Francisco Javier Barrena
como de grave es?
- Francisco Javier Barrena
- Francisco Javier Barrena
third party cookies
- Francisco Javier Barrena
● Esto precisamente es una third-party cookie. Una cookie
configurada por alguien que no es del dominio del website.
● En el ejemplo anterior, la cookie de Google es una
third-party cookie, porque se envía a través de
https://esjoy.es
● Una third-party cookie es una especie de cookie “parásito”
first party cookie
- Francisco Javier Barrena
● En contraposición, una first-party cookie es una cookie que
el dueño del website “settea” directamente. En este ejemplo,
las cookies setteadas por https://esjoy.es son first-class
cookies.
● Estas cookies no se ven afectadas por el cambio de
Chrome, solo las third-party cookies
- Francisco Javier Barrena
third-party cookies malas! malas!
- Francisco Javier Barrena
● Aunque se utilicen, efectivamente, para trackear y
personalizar anuncios, las third-party cookies también se
utilizan para el bien
● Son perfectas para interoperabilidad entre sistemas, por
ejemplo, permitiendo Single Sign On entre diferentes
dominios
● Son muy utilizadas también en diferentes protocolos (por
ejemplo, en LMSs como Moodle), asi que quizá te veas
afectado por este cambio más de lo crees.
el caso labster
- Francisco Javier Barrena
● Labster sds es un software educativo que utiliza
simulaciones virtuales en el sector STEM
● Los usuarios de Labster son estudiantes (bueno, y
profesores) de todo el mundo, pero los clientes de Labster
no son ellos, son las instituciones educativas
(universidades, institutos, colegios…)
● Estas instituciones tienen sus propios sistemas de gestión
académica (LMS: Learning Management System), en los
cuales Labster debe integrarse
el caso labster
- Francisco Javier Barrena
● Pero además es que hay un montón de LMSs
○ Blackboard
○ Moodle
○ Canvas API
○ Schoology
○ Vitalsource*
○ Classlink
○ Clever
○ Brightspace
○ Sakai
○ …
● En cada LMS, Labster se integra a través de un IFRAME y
un protocolo estándar de comunicación llamado LTI
el caso labster
- Francisco Javier Barrena
● Este protocolo LTI, en su versión más extendida (la 1.3)
utiliza por debajo third-party cookies
● Es además el protocolo… y los protocolos hay que
seguirlos, a menos que seas Microsoft…
● LTI está trabajando en una actualización del protocolo,
pero…
alternativas
- Francisco Javier Barrena
● El nuevo Privacy Sandbox ofrece 4 alternativas
○ CHIPS, o Partitioned Cookies
○ Storage Access API
○ Related Website Sets
https://developers.google.com/privacy-sandbox/3pcd
CHIPS
- Francisco Javier Barrena
● Cookies Having Independent Partitioned State, o cookies
particionadas
● Con este tipo de cookies, se evita que cookies de terceros
activen servicios para trackear usuarios en sitios web de los
que no sean dueños del dominio o cross-site tracking
(exactamente lo que se quiere evitar)
CHIPS
- Francisco Javier Barrena
● Así funcionan las cookies no particionadas (las normales
vamos)
CHIPS
- Francisco Javier Barrena
● Y así funcionan las cookies particionadas
CHIPS
- Francisco Javier Barrena
● Pero sobretodo… evitan esto
CHIPS
- Francisco Javier Barrena
● Pros
○ Súper fácil de implementar. Simplemente crea tu third-party
cookie como siempre, y añádele un ; Partitioned al final
○ Transparente para los usuarios. No se darán cuenta del
cambio
● Contras
○ La mayoría de APIs de servidores aún no lo contemplan,
aunque se puede transformar a string y hacerle un append
manualmente
○ No es una solución completa, si se abre una pestaña nueva
se pierden las cookies, aunque sea en el mismo dominio
○ Solo soportado por Chrome, Edge y Opera de momento
■ Pero es un estándar, todos los browsers terminarán por
implementarlo
Storage access API
- Francisco Javier Barrena
● Nueva API de Javascript que permite que los iframes
soliciten permisos de acceso al almacenamiento de sus
padres
● Permite proporcionar acceso a cookies específicas entre
sitios (explícito y mínimo), evitando el uso de cookies
genéricas para tracking de usuarios
● De momento, solo se permite el acceso a las cookies del
iframe hijo al sitio padre, aunque se están planteando
extenderlo a más objectos (LocalStorage, SessionStorage,
etc.)
Storage access API
- Francisco Javier Barrena
● Básicamente, son dos métodos
● Al solicitar acceso, le aparecerá al usuario un mensaje como
este
Storage access API
- Francisco Javier Barrena
● El mecanismo es bastante sencillo en realidad
storage access api
- Francisco Javier Barrena
● Pros
○ Es la solución donde se programa más (no se si es un
contra…)
○ Más control fino, pero a costa de más mantenimiento
después
● Contras
○ Ni dios va a decir “Acepto” al mensajito
○ Implica muchos cambios en el código, a muchos
niveles
related website set (RWS)
- Francisco Javier Barrena
● Registro donde las empresas declaran las relaciones entre
sitios a los navegadores, de modo que éstos permitan un
acceso limitado a las third-party cookies para fines
específicos
● Para hacer esto (en el caso de Chrome), solo hay que hacer
una PR a un repo con un JSON específico, declarando
estas relaciones
● A mi me parece una puta mierda…
related website set
- Francisco Javier Barrena
- Francisco Javier Barrena
related website set
- Francisco Javier Barrena
● Pros
○ Solución política (o quizá es un contra…)
○ Hyperfácil (si funciona la política)
● Contras
○ Declarar todas las relaciones entre sitios puede ser
complicado
○ Cada browser tendrá su propia lista… así que hay que
multiplicar ese esfuerzo mínimo x3
○ En realidad no arreglas tu dependencia con las third
party cookies, simplemente le metes una excepción
que te deja a merced del proveedor del browser
solución escogida
- Francisco Javier Barrena
● Evaluando todas las opciones, nosotros nos decantamos
por utilizar CHIPS
○ Son las más transparentes para el usuario
■ Básicamente, el usuario ni se entera
■ Storage API le pide al usuario que acepte
○ Son las que nos dan más control del resultado final
■ Storage API depende de que el usuario acepte, y
de que el frame padre también lo permita
■ RWS depende del cada fabricante de browser, si
un día Google decide cobrarte por estar en el
registro, pues a pagar
● Pero las CHIPS no son una solución completa…
solución escogida
- Francisco Javier Barrena
● Pero las CHIPS no son una solución completa
● Como vimos anteriormente, todas las cookies se pierden
en cuanto abrimos una ventana o una pestaña nueva.
Esto es así porque una cookie particionada solo existe en el
scope de un iframe dentro de un determinado dominio
● Aquí es donde el concepto de One Time Token entra en
juego
solución escogida
- Francisco Javier Barrena
● Pero las CHIPS no son una solución completa
● Como vimos anteriormente, todas las cookies se pierden
en cuanto abrimos una ventana o una pestaña nueva.
Esto es así porque una cookie particionada solo existe en el
scope de un iframe dentro de un determinado dominio
● Aquí es donde el concepto de One Time Token entra en
juego
one time tokens
- Francisco Javier Barrena
● Un One Time Token es un token temporal, de vida corta
que autoriza a un usuario
● Esta autorización puede ser de varias maneras, pero una
ideal podría ser… efectivamente… ¡una cookie!
● Podemos entenderlo como un token temporal que me
permite intercambiarlo por una first-party cookie de
autorización
one time tokens
- Francisco Javier Barrena
● Son muy fáciles de implementar y solo necesitas dos
endpoints
● Uno que reciba un usuario autenticado y genere un one
time token asociado a ese usuario
● Y otro endpoint que reciba un one time token y devuelva
una nueva cookie de autorización
○ Éste endpoint debe ser público, es decir, debe de
poder ser invocado por cualquiera
one time tokens
- Francisco Javier Barrena
one time tokens
- Francisco Javier Barrena
one time tokens
- Francisco Javier Barrena
● Puedes guardar los OTT como quieras, pero aquí van
algunas recomendaciones que te harán la vida más fácil
○ Los OTT son de consumo rápido, y se generan justo
antes de ser consumidos
○ Si tienes un REDIS o algo similar puedes utilizar su
API para generar items que caduquen
automáticamente después de pocos segundos (15 por
ejemplo).
○ Si no, puedes guardarlos en tu base de datos, pero
tendrás que programar (y monitorizar) un cronjob que
los revise y elimine los expirados…
one time tokens
- Francisco Javier Barrena
one time tokens
- Francisco Javier Barrena
one time tokens y el frontend
- Francisco Javier Barrena
● Para consumirlo es muy fácil, simplemente checkea si hay
una query string de OTT presente y llama al endpoint de
/use
○ El endpoint manda una cookie de autorización, que el
navegador procesará automáticamente
- Francisco Javier Barrena
no caigáis donde caí yo
- Francisco Javier Barrena
● Si tenéis la oportunidad, investigad qué navegadores y qué
versiones de navegador utilizan vuestros usuarios
○ CHIPS disponibles en Chrome a partir de version
113
○ En versiones anteriores de Chrome las CHIPS no
funcionan
○ Paradójicamente, las CHIPS son tomadas como
cookies normales en Safari y Firefox, que no
soportan todavía CHIPS…
● En Javascript, la API de las cookies es una basura
○ Eso os va a obligar a hacer algunas pirulas
● Ojo al momento del despliegue…
○ Las cookies las usa todo dios, desde el minuto uno
○ Y o funcionan, o no funcionan…
○ Así que o triunfas, o te la pegas
no caigáis donde caí yo
- Francisco Javier Barrena
● Ojo en el testeo. No limpies cookies y dejes un entorno
limpio en desarrollo/testeo. La realidad no va a ser así
● Si vais a desplegar a nivel mundial, haced targeting con
Feature Flags si podéis
el caso labster
- Francisco Javier Barrena
● Este protocolo LTI, en su versión más extendida (la 1.3)
utiliza por debajo third-party cookies
● Es además el protocolo… y los protocolos hay que
seguirlos, a menos que seas Microsoft…
● LTI está trabajando en una actualización del protocolo,
pero…
- Francisco Javier Barrena
● Now: CTO at Kyso Inc.
● Former Head of Engineering and Head of Cybersecurity
Research Group at ITI
● Former Professor at Big Data Analytics Master - UPV
● Former Professor at Specialist ENS Course - Univ. Mondragón
● Teacher (+30 courses)
● Speaker (+40 talks)
● +12 years of professional experience
Francisco Javier Barrena
Gracias!

Más contenido relacionado

Similar a ¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software

Similar a ¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software (20)

Tecnologia
TecnologiaTecnologia
Tecnologia
 
Tecnología
TecnologíaTecnología
Tecnología
 
Cookies
CookiesCookies
Cookies
 
charla taller web 2.0 y redes sociales
charla taller web 2.0 y redes socialescharla taller web 2.0 y redes sociales
charla taller web 2.0 y redes sociales
 
Cómo nos controla Google
Cómo nos controla GoogleCómo nos controla Google
Cómo nos controla Google
 
Actividad indfividual 4
Actividad indfividual 4Actividad indfividual 4
Actividad indfividual 4
 
Actividad indfividual 4
Actividad indfividual 4Actividad indfividual 4
Actividad indfividual 4
 
Cómo evitar ser rastreado mientras navegamos
Cómo evitar ser rastreado mientras navegamosCómo evitar ser rastreado mientras navegamos
Cómo evitar ser rastreado mientras navegamos
 
Caracteristicas de la 3era Decada de la web, buscadores
Caracteristicas de la 3era Decada de la web, buscadoresCaracteristicas de la 3era Decada de la web, buscadores
Caracteristicas de la 3era Decada de la web, buscadores
 
Wordpress
WordpressWordpress
Wordpress
 
Clase 6 E-Marketing 2015
Clase 6 E-Marketing 2015Clase 6 E-Marketing 2015
Clase 6 E-Marketing 2015
 
Qué es un blog
Qué es un blogQué es un blog
Qué es un blog
 
Qué es un blog
Qué es un blogQué es un blog
Qué es un blog
 
Guía básica de seo
Guía básica de seoGuía básica de seo
Guía básica de seo
 
Cookies y privacidad, tocino y velocidad - sh3llcon (Enero 2015)
Cookies y privacidad, tocino y velocidad - sh3llcon (Enero 2015)Cookies y privacidad, tocino y velocidad - sh3llcon (Enero 2015)
Cookies y privacidad, tocino y velocidad - sh3llcon (Enero 2015)
 
Consulta wordpress
Consulta  wordpressConsulta  wordpress
Consulta wordpress
 
Examenfinal de powerpoint
Examenfinal de powerpointExamenfinal de powerpoint
Examenfinal de powerpoint
 
Buscadores de internet...
Buscadores de internet...Buscadores de internet...
Buscadores de internet...
 
Facebook para empresas - Ricardo Zegarra
Facebook para empresas - Ricardo ZegarraFacebook para empresas - Ricardo Zegarra
Facebook para empresas - Ricardo Zegarra
 
Sesion 16 11-2010
Sesion 16 11-2010Sesion 16 11-2010
Sesion 16 11-2010
 

Más de Francisco Javier Barrena

Codemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfCodemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfFrancisco Javier Barrena
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...Francisco Javier Barrena
 
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataquesWelcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataquesFrancisco Javier Barrena
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoFrancisco Javier Barrena
 
Deja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsDeja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsFrancisco Javier Barrena
 
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Francisco Javier Barrena
 
Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudFrancisco Javier Barrena
 
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoTotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoFrancisco Javier Barrena
 
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Francisco Javier Barrena
 
NestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y PuntoneterosNestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y PuntoneterosFrancisco Javier Barrena
 
Angular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereAngular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereFrancisco Javier Barrena
 
Machine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMMachine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMFrancisco Javier Barrena
 
Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioFrancisco Javier Barrena
 

Más de Francisco Javier Barrena (15)

Codemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfCodemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdf
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
 
Semana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUMSemana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUM
 
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataquesWelcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
Welcome to Gotham - Nuevas formas ingeniosas y terroríficas de ciberataques
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el camino
 
Deja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsDeja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOps
 
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
 
Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del Cloud
 
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoTotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
 
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
 
NestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y PuntoneterosNestJS: Backends en Node para Javeros y Puntoneteros
NestJS: Backends en Node para Javeros y Puntoneteros
 
Angular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereAngular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhere
 
Kubernetes - The Cloud King
Kubernetes - The Cloud KingKubernetes - The Cloud King
Kubernetes - The Cloud King
 
Machine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMMachine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVM
 
Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.io
 

Último

Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 

Último (20)

Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 

¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software

  • 1. ¡Cookiegeddon! Adiós a las cookies de terceros y cómo afectará a tu software Francisco Javier Barrena
  • 2. ● Now: Principal Engineer at Labster Inc. ● Former CTO of Kyso (now open source) ● Former Head of Engineering and Head of Cybersecurity Research Group at ITI ● Former Professor at Big Data Analytics Master - UPV ● Former Professor at Specialist ENS Course - Univ. Mondragón ● Teacher (+30 courses) ● Speaker (+40 talks) ● +14 years of professional experience https://fjbarrena.dev Francisco Javier Barrena
  • 3. El viaje - Francisco Javier Barrena - Francisco Javier Barrena Francisco Javier Barrena - @dogdeveloper
  • 4. where the fuck are my cookies? - Francisco Javier Barrena ● Desde el 4 de enero de 2024, Google empezó a testear con usuarios reales sus nuevas features sobre privacidad, deshabilitando el uso de cookies de terceros (Third Party Cookies) para el 1% de los usuarios ● Del 4 de enero al 1 de Abril de 2024 se considera periodo de gracia ● A partir del 1 de Abril, Google empezará a aumentar el % de usuarios con las cookies de terceros deshabilitadas por defecto, hasta llegar al 100% a finales de año Cookie
  • 5. - Francisco Javier Barrena @DogDeveloper - Francisco Javier Barrena
  • 6. - Francisco Javier Barrena @DogDeveloper - Francisco Javier Barrena .400.000.000
  • 7. ● Ene. 2021 - Mar. 2022. EL ARMAGGEDDÓN ○ Refactor de la API en Typescript con NestJS - ACIERTO ○ Refactor del modelo de datos siguiendo patrones SOLID - ACIERTO ○ Deployment en plain Kubernetes - ACIERTO ○ Ni de coña pudimos refactorizar el front ○ Se pone en staging en el cliente en tiempo ○ La calidad del producto no es la que nos gustaría, pero es suficiente ● Mar. 2022 - Jun. 2022. Aquí la liamos un poco ○ El cliente empieza a pedir cambios ○ Pero nosotros nos volvemos locos y empezamos a desarrollar features a cascoporro - ERROR El viaje - Francisco Javier Barrena @DogDeveloper - Francisco Javier Barrena
  • 8. un poco de historia - Francisco Javier Barrena ● Las cookies fueron creadas en 1994 por un empleado de Netscape, mientras implementaba un carrito de la compra ● No quería guardar la información del carrito en el servidor, prefería guardarlo en lado del cliente, para ahorrarse unos duros en el servidor ● Internet Explorer no tardó en seguir a Netscape en 1995 ● Y en 1996 se publicó el primer artículo acerca de los problemas de privacidad que las cookies traían consigo
  • 10. como funcionan las cookies? - Francisco Javier Barrena ● Imaginemos que tenemos un sitio web que requiere a sus usuarios que se logueen ● Al loguearse, envían una petición HTTP con su usuario y password al servidor, que autoriza o deniega el acceso
  • 11. como funcionan las cookies? - Francisco Javier Barrena ● Y aquí es donde está el matiz… el protocolo HTTP es stateless ● Esto significa que cuando hagamos otra petición al mismo servidor, éste habrá olvidado quién eres, y por lo tanto, volverá a preguntarte quién eres ● Esto es extremadamente time-consuming e ineficiente
  • 13. como funcionan las cookies? - Francisco Javier Barrena ● Aquí es donde entran las cookies. Siguiendo el mismo flujo descrito anteriormente, el servidor, además de autorizarte, envía una cookie a tu navegador ● Esta cookie se almacena en tu ordenador, y se “reenvía” automáticamente en cada petición subsiguiente que hagas al mismo sitio web ● Estas cookies contienen un identificador único que permiten al servidor “recordar” quién eres (token JWT, etc.)
  • 14. que es una cookie de terceros? - Francisco Javier Barrena ● Explicar que es una cookie de terceros
  • 15. como funcionan las cookies? - Francisco Javier Barrena ● Las cookies también se pueden usar para más cosas, como por ejemplo almacenar settings, recordar en qué capítulo y segundo te quedaste viendo una serie, etc. ● Así que las cookies son un mecanismo útil que “añade” memoria a un protocolo que por diseño es stateless
  • 16. qué limites tienen las cookies? - Francisco Javier Barrena ● Las cookies además, ya tienen limitaciones, principalmente ○ Número máximo de cookies por browser/domain ■ Safari - 600 ■ Chrome - 180 ■ Firefox - 150 ■ Opera - 60 ■ ¿ Y Edge?
  • 20. qué limites tienen las cookies? - Francisco Javier Barrena ● Las cookies además, ya tienen limitaciones, principalmente (cont.) ○ Máximo 4096 bytes de datos ○ Y la más importante, las cookies están acotadas al dominio que las creó ○ Es decir, si yo creo una cookie en https://fjbarrena.dev las cookies solo se adjuntarán a las peticiones a https://fjbarrena.dev
  • 22. entonces cuál es el problema? - Francisco Javier Barrena ● Si una cookie de un dominio no puede ser leído por otro dominio… ¿cómo nos trackean? ¿cómo puede Google saber a qué sitios hemos visitado? ● Todo el proceso de tracking empieza cuando entras a tu cuenta de Google (o de Facebook, o de Twitter, ponga-aquí-la-gran-empresa-que-usted-quiera) ● Como ya hemos visto, Google guarda una cookie en tu navegador en su proceso de login, hasta aquí nada fuera de lo normal
  • 23. entonces cuál es el problema? - Francisco Javier Barrena ● Esta cookie es scoped, es decir, está bindeada al dominio google.com, por lo que nadie excepto Google va a poder leerla ● Ahora imaginemos que sales de Google, y visitas una tienda online para comprar unos Plenny Shake, tus batidos nutricionales 100% Veganos que sustituyen tu desayuno, comida y cena ● Y de repente…
  • 25. entonces cuál es el problema? - Francisco Javier Barrena ● Si la cookie que haya puesto https://esjoy.es solo la puede leer https://esjoy.es porqué carajo ahora entro en Youtube y me sale un fucking anuncio de Plenny Shake
  • 26. entonces cuál es el problema? - Francisco Javier Barrena ● No, no nos han engañado, pero han sido muy listos. Google no puede leer la cookie de la tienda online, ni viceversa, el scope lo impide, pero imaginemos que la tienda online tiene Google Analytics, o un botón de compartir en Facebook, o un tweet (me niego a llamarlo ‘post’) embebido… ● Para usar Google Analytics, o lo que sea, el navegador necesita descargarse código del dominio de Google ● Como ya hemos visto, todas las cookies se mandan autoḿaticamente al dominio, y así es como se manda la cookie de Google a través de esjoy.es
  • 27. que es una cookie de terceros? - Francisco Javier Barrena ● Explicar que es una cookie de terceros
  • 28. y ese es el truco… - Francisco Javier Barrena ● El truco es sencillo… convence al mayor número de sitios web posibles de que pongan en algún sitio un trocito de tu código en su página… ○ Un botón de “Me gusta” ○ Un “Logueate con Google” ○ Una librería de analítica web ○ Una librería para poner algún anuncio y poder monetizar tu blog ○ Etc. ● Y qué curioso que todas estas cosas sean “gratis”...
  • 30. como de grave es? - Francisco Javier Barrena
  • 31. como de grave es? - Francisco Javier Barrena
  • 33. third party cookies - Francisco Javier Barrena ● Esto precisamente es una third-party cookie. Una cookie configurada por alguien que no es del dominio del website. ● En el ejemplo anterior, la cookie de Google es una third-party cookie, porque se envía a través de https://esjoy.es ● Una third-party cookie es una especie de cookie “parásito”
  • 34. first party cookie - Francisco Javier Barrena ● En contraposición, una first-party cookie es una cookie que el dueño del website “settea” directamente. En este ejemplo, las cookies setteadas por https://esjoy.es son first-class cookies. ● Estas cookies no se ven afectadas por el cambio de Chrome, solo las third-party cookies
  • 36. third-party cookies malas! malas! - Francisco Javier Barrena ● Aunque se utilicen, efectivamente, para trackear y personalizar anuncios, las third-party cookies también se utilizan para el bien ● Son perfectas para interoperabilidad entre sistemas, por ejemplo, permitiendo Single Sign On entre diferentes dominios ● Son muy utilizadas también en diferentes protocolos (por ejemplo, en LMSs como Moodle), asi que quizá te veas afectado por este cambio más de lo crees.
  • 37. el caso labster - Francisco Javier Barrena ● Labster sds es un software educativo que utiliza simulaciones virtuales en el sector STEM ● Los usuarios de Labster son estudiantes (bueno, y profesores) de todo el mundo, pero los clientes de Labster no son ellos, son las instituciones educativas (universidades, institutos, colegios…) ● Estas instituciones tienen sus propios sistemas de gestión académica (LMS: Learning Management System), en los cuales Labster debe integrarse
  • 38. el caso labster - Francisco Javier Barrena ● Pero además es que hay un montón de LMSs ○ Blackboard ○ Moodle ○ Canvas API ○ Schoology ○ Vitalsource* ○ Classlink ○ Clever ○ Brightspace ○ Sakai ○ … ● En cada LMS, Labster se integra a través de un IFRAME y un protocolo estándar de comunicación llamado LTI
  • 39. el caso labster - Francisco Javier Barrena ● Este protocolo LTI, en su versión más extendida (la 1.3) utiliza por debajo third-party cookies ● Es además el protocolo… y los protocolos hay que seguirlos, a menos que seas Microsoft… ● LTI está trabajando en una actualización del protocolo, pero…
  • 40. alternativas - Francisco Javier Barrena ● El nuevo Privacy Sandbox ofrece 4 alternativas ○ CHIPS, o Partitioned Cookies ○ Storage Access API ○ Related Website Sets https://developers.google.com/privacy-sandbox/3pcd
  • 41. CHIPS - Francisco Javier Barrena ● Cookies Having Independent Partitioned State, o cookies particionadas ● Con este tipo de cookies, se evita que cookies de terceros activen servicios para trackear usuarios en sitios web de los que no sean dueños del dominio o cross-site tracking (exactamente lo que se quiere evitar)
  • 42. CHIPS - Francisco Javier Barrena ● Así funcionan las cookies no particionadas (las normales vamos)
  • 43. CHIPS - Francisco Javier Barrena ● Y así funcionan las cookies particionadas
  • 44. CHIPS - Francisco Javier Barrena ● Pero sobretodo… evitan esto
  • 45. CHIPS - Francisco Javier Barrena ● Pros ○ Súper fácil de implementar. Simplemente crea tu third-party cookie como siempre, y añádele un ; Partitioned al final ○ Transparente para los usuarios. No se darán cuenta del cambio ● Contras ○ La mayoría de APIs de servidores aún no lo contemplan, aunque se puede transformar a string y hacerle un append manualmente ○ No es una solución completa, si se abre una pestaña nueva se pierden las cookies, aunque sea en el mismo dominio ○ Solo soportado por Chrome, Edge y Opera de momento ■ Pero es un estándar, todos los browsers terminarán por implementarlo
  • 46. Storage access API - Francisco Javier Barrena ● Nueva API de Javascript que permite que los iframes soliciten permisos de acceso al almacenamiento de sus padres ● Permite proporcionar acceso a cookies específicas entre sitios (explícito y mínimo), evitando el uso de cookies genéricas para tracking de usuarios ● De momento, solo se permite el acceso a las cookies del iframe hijo al sitio padre, aunque se están planteando extenderlo a más objectos (LocalStorage, SessionStorage, etc.)
  • 47. Storage access API - Francisco Javier Barrena ● Básicamente, son dos métodos ● Al solicitar acceso, le aparecerá al usuario un mensaje como este
  • 48. Storage access API - Francisco Javier Barrena ● El mecanismo es bastante sencillo en realidad
  • 49. storage access api - Francisco Javier Barrena ● Pros ○ Es la solución donde se programa más (no se si es un contra…) ○ Más control fino, pero a costa de más mantenimiento después ● Contras ○ Ni dios va a decir “Acepto” al mensajito ○ Implica muchos cambios en el código, a muchos niveles
  • 50. related website set (RWS) - Francisco Javier Barrena ● Registro donde las empresas declaran las relaciones entre sitios a los navegadores, de modo que éstos permitan un acceso limitado a las third-party cookies para fines específicos ● Para hacer esto (en el caso de Chrome), solo hay que hacer una PR a un repo con un JSON específico, declarando estas relaciones ● A mi me parece una puta mierda…
  • 51. related website set - Francisco Javier Barrena
  • 53. related website set - Francisco Javier Barrena ● Pros ○ Solución política (o quizá es un contra…) ○ Hyperfácil (si funciona la política) ● Contras ○ Declarar todas las relaciones entre sitios puede ser complicado ○ Cada browser tendrá su propia lista… así que hay que multiplicar ese esfuerzo mínimo x3 ○ En realidad no arreglas tu dependencia con las third party cookies, simplemente le metes una excepción que te deja a merced del proveedor del browser
  • 54. solución escogida - Francisco Javier Barrena ● Evaluando todas las opciones, nosotros nos decantamos por utilizar CHIPS ○ Son las más transparentes para el usuario ■ Básicamente, el usuario ni se entera ■ Storage API le pide al usuario que acepte ○ Son las que nos dan más control del resultado final ■ Storage API depende de que el usuario acepte, y de que el frame padre también lo permita ■ RWS depende del cada fabricante de browser, si un día Google decide cobrarte por estar en el registro, pues a pagar ● Pero las CHIPS no son una solución completa…
  • 55. solución escogida - Francisco Javier Barrena ● Pero las CHIPS no son una solución completa ● Como vimos anteriormente, todas las cookies se pierden en cuanto abrimos una ventana o una pestaña nueva. Esto es así porque una cookie particionada solo existe en el scope de un iframe dentro de un determinado dominio ● Aquí es donde el concepto de One Time Token entra en juego
  • 56. solución escogida - Francisco Javier Barrena ● Pero las CHIPS no son una solución completa ● Como vimos anteriormente, todas las cookies se pierden en cuanto abrimos una ventana o una pestaña nueva. Esto es así porque una cookie particionada solo existe en el scope de un iframe dentro de un determinado dominio ● Aquí es donde el concepto de One Time Token entra en juego
  • 57. one time tokens - Francisco Javier Barrena ● Un One Time Token es un token temporal, de vida corta que autoriza a un usuario ● Esta autorización puede ser de varias maneras, pero una ideal podría ser… efectivamente… ¡una cookie! ● Podemos entenderlo como un token temporal que me permite intercambiarlo por una first-party cookie de autorización
  • 58. one time tokens - Francisco Javier Barrena ● Son muy fáciles de implementar y solo necesitas dos endpoints ● Uno que reciba un usuario autenticado y genere un one time token asociado a ese usuario ● Y otro endpoint que reciba un one time token y devuelva una nueva cookie de autorización ○ Éste endpoint debe ser público, es decir, debe de poder ser invocado por cualquiera
  • 59. one time tokens - Francisco Javier Barrena
  • 60. one time tokens - Francisco Javier Barrena
  • 61. one time tokens - Francisco Javier Barrena ● Puedes guardar los OTT como quieras, pero aquí van algunas recomendaciones que te harán la vida más fácil ○ Los OTT son de consumo rápido, y se generan justo antes de ser consumidos ○ Si tienes un REDIS o algo similar puedes utilizar su API para generar items que caduquen automáticamente después de pocos segundos (15 por ejemplo). ○ Si no, puedes guardarlos en tu base de datos, pero tendrás que programar (y monitorizar) un cronjob que los revise y elimine los expirados…
  • 62. one time tokens - Francisco Javier Barrena
  • 63. one time tokens - Francisco Javier Barrena
  • 64. one time tokens y el frontend - Francisco Javier Barrena ● Para consumirlo es muy fácil, simplemente checkea si hay una query string de OTT presente y llama al endpoint de /use ○ El endpoint manda una cookie de autorización, que el navegador procesará automáticamente
  • 66. no caigáis donde caí yo - Francisco Javier Barrena ● Si tenéis la oportunidad, investigad qué navegadores y qué versiones de navegador utilizan vuestros usuarios ○ CHIPS disponibles en Chrome a partir de version 113 ○ En versiones anteriores de Chrome las CHIPS no funcionan ○ Paradójicamente, las CHIPS son tomadas como cookies normales en Safari y Firefox, que no soportan todavía CHIPS… ● En Javascript, la API de las cookies es una basura ○ Eso os va a obligar a hacer algunas pirulas ● Ojo al momento del despliegue… ○ Las cookies las usa todo dios, desde el minuto uno ○ Y o funcionan, o no funcionan… ○ Así que o triunfas, o te la pegas
  • 67. no caigáis donde caí yo - Francisco Javier Barrena ● Ojo en el testeo. No limpies cookies y dejes un entorno limpio en desarrollo/testeo. La realidad no va a ser así ● Si vais a desplegar a nivel mundial, haced targeting con Feature Flags si podéis
  • 68. el caso labster - Francisco Javier Barrena ● Este protocolo LTI, en su versión más extendida (la 1.3) utiliza por debajo third-party cookies ● Es además el protocolo… y los protocolos hay que seguirlos, a menos que seas Microsoft… ● LTI está trabajando en una actualización del protocolo, pero…
  • 70. ● Now: CTO at Kyso Inc. ● Former Head of Engineering and Head of Cybersecurity Research Group at ITI ● Former Professor at Big Data Analytics Master - UPV ● Former Professor at Specialist ENS Course - Univ. Mondragón ● Teacher (+30 courses) ● Speaker (+40 talks) ● +12 years of professional experience Francisco Javier Barrena Gracias!