Cet article d'Auth0 recommande de stocker le JWT localement dans un stockage local (ou cookie). Mais cet article de OWASP recommande de ne pas raconter les données sensibles localement (pas même sessionStorage)
Alors, est-il sûr de stocker le jeton JWT localement ou non?
Comme c'est bizarre! J'ai posé la même question il y a environ un mois.
En fin de compte, nous avons décidé que l'utilisation de localstorage pour le jeton JWT était correcte, tant que nous faisions également ce qui suit au niveau HTTP:
localhost:4200
Ce qui précède vous donnera un A/A + sur securityheaders.io , et empêchera les attaques les plus courantes (quelqu'un incorporant votre site Web dans un iframe et extrayant des données de localstorage, par exemple).
En fait ça dépend. Si vous avez une vulnérabilité XSS dans votre application, un attaquant peut extraire et utiliser le JWT de votre stockage local.
Une méthode que j'ai utilisée et je pense qu'Auth0 indique est d'utiliser le cookie comme stockage JWT et d'utiliser les indicateurs HTTP uniquement et sécurisé de cette façon si vous avez une vulnérabilité XSS, le cookie ne peut pas être lu et est uniquement transporté de manière sûre. Le CSRF est moins à risque de nos jours car tous les cadres modernes incluent l'atténuation du CSRF.
Cela signifierait que la validation extrait le JWT du cookie côté serveur pour le valider. Mon opinion personnelle est d'utiliser un cookie comme stockage car CSRF est plus facile à trouver et à atténuer par rapport aux attaques XSS qui ont une grande surface d'attaque.