Apariencia
0014. Refresh token en cookie httpOnly / Drift; access solo en memoria; nunca localStorage
Estado
Aceptada
Contexto
Los tokens de sesión son un vector clásico de XSS si se guardan en almacenamiento accesible por JavaScript.
Decisión
El refresh token vive en cookie httpOnly en web (SameSite=Lax, path /auth, COOKIE_SECURE en prod) y en Drift en mobile (enviado en el body de /auth/refresh, no hay cookies en mobile). El access token vive solo en memoria, con silent refresh al recargar la app. Nunca en localStorage.
Consecuencias
Mitiga XSS: el JavaScript de la página nunca tiene acceso al refresh token. El interceptor Dio (mobile) maneja 401 con auto-refresh y cola de requests; un listener de conectividad dispara silent refresh al recuperar red. Pendiente en CD: fijar COOKIE_SECURE=true y revisar SameSite si admin y API terminan en dominios distintos.