Salut, Je met actuellement en place un système, très simple, d’authentification sur une appli web, avec des JWT.
D’après les ressources que j’ai trouvées, on a plusieurs choix pour stocker le token, dont : sessionStorage(ou localStorage), et cookie (httpOnly et Secure, etc.).
Ce que je comprends, c’est que le cookie, c’est mieux, parce que le sessionStorage est accessible en cas de XSS. Au contraire, le cookie n’est compromis qu’en cas de CSRF. Or, et je résume grossièrement ce que j’ai pu lire, il est plus simple de se protéger contre les CSRF que les XSS, et les XSS peuvent impliquer des CSRF.
Cependant, j’ai l’impression que le passage du JWT dans un header Authorization (Bearer token), est répandue, et je trouve des exemples dans pas mal de documentations officielles.
Précision : je fais une application avec une API .NET et un front Angular. Ca n’est pas tellement important, sauf parce qu’Angular est censé (mais je ne sais pas à quel point ça doit jouer sur notre approche des ces questions) protéger contre le XSS, sauf bypass explicite.
Ce que mes recherches tendent à me montrer, c’est surtout qu’il n’y a pas de solution simple, et qu’il faut combiner des protections concernant les XSS et CSRF et une faible durée de vie des tokens. Eventuellement aussi,un refresh et rotation des refresh tokens, comme expliqué ici : https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/
Mes questions : Est-ce que je comprends bien les données du problème ? Est-ce que quelqu’un a de l’expérience / des ressources à ce sujet, au-delà de ce que l’on trouve en cherchant "naïvement" ? Est-ce qu’on s’en fiche parce que le véritable enjeu est de se protéger contre les attaques XSS et CSRF ?
J’ai trouvé plein de trucs déjà, dont je vous épargne les liens : tutoriaux généraux et spécifiques à .NET-Angular, explications théoriques, sujets Stack Overflow, pages OWASP. J’ai aussi cherché un peu sur Zds, et trouvé ce sujet qui posait des questions proches.
Pour l’instant, j’en reste à stocker le token dans le sessionStorage, mais je sens bien au fond de moi que c’est mal !
Merci d’avance pour vos réponses !