He estado leyendo el borrador de Aaron Parecki de las mejores prácticas de autenticación de aplicaciones basadas en navegador (es decir, SPA como las desarrolladas con React o Angular) con OAuth 2, así como las pautas de seguridad de OWASP, y me dejó realmente confundido:
localStorage de manera predeterminada, lo que no recomiendan las pautas de OWASP. ¿Tiene algún tipo de protección extra? ¿Debería ponerle un resumen adicional y también ponerlo en una cookie y combinarlos?Algunas referencias:
FLUJO DE SPA TRADICIONAL
En el flujo de SPA tradicional, era estándar usar iframes para renovar tokens de forma silenciosa .
Mientras tanto, los tokens de acceso se almacenaron mejor solo en la memoria y también deberían ser de corta duración. Todavía había amenazas de capturar tokens en tránsito, algunas de las cuales se exploran en esta publicación mía .
ACTUALIZACIÓN 2021
Hay dos grandes cambios en los navegadores que están relacionados con la actualización del token SPA:
Los navegadores colocan cookies de terceros de manera agresiva, lo que significa que la actualización del token SPA tradicional ya no funciona de manera confiable (por ejemplo, en el navegador Safari)
La seguridad de las cookies del navegador se ha fortalecido a través de las cookies SameSite=strict , y las preocupaciones sobre las amenazas XSS (video) han aumentado
PARTE TRASERA PARA LA PARTE DELANTERA
Por lo tanto, ahora se recomienda almacenar tokens de actualización en HTTP solo cifrado SameSite=strict . Esto se hace mejor de una manera impulsada por API, para evitar afectar la arquitectura web. Consulte esta publicación de blog para obtener algunas prácticas recomendadas actualizadas y enlaces a recursos, incluido un ejemplo de código React.