Meilleure façon de stocker un jeton jwt

LocalStorage vs Cookies : le guide des meilleures pratiques pour stocker les tokens JWT en toute sécurité dans votre front-end

Dans le paysage actuel du développement web, les jetons web JSON (JWT) sont devenus un choix populaire pour l’authentification et l’autorisation. Cependant, le stockage sécurisé des jetons Web JSON dans le frontend d’une application pose un défi important. 

Dans cet article, nous allons explorer diverses techniques pour résoudre ce problème et assurer la protection des informations sensibles des utilisateurs. 

Nous aborderons les avantages et les inconvénients de l’utilisation Qu’est-ce qu’un

jeton Web JSON (jeton JWT) ?

Avant de se plonger dans les options de stockage, il est crucial de comprendre la nature d’un jeton JWT - il s’agit d’une « norme ouverte (RFC 7519) qui définit une manière compacte et autonome de transmettre en toute sécurité des informations entre les parties en tant qu’objet JSON ».

Un jeton web JSON se compose de trois parties : un en-tête (par exemple, l’en-tête d’autorisation), une charge utile JWT et une signature. 

La charge utile contient des revendications, telles que des informations sur l’utilisateur ou des autorisations (par exemple, utilisées comme jeton d’accès), tandis que la signature garantit l’intégrité du jeton.

Quels sont les problèmes de sécurité liés au stockage des jetons Web JSON dans une interface d’application ?

Lorsqu’il s’agit de stocker des jetons Web JSON dans le frontend, deux préoccupations principales se posent :

  1. la protection contre les attaques XSS (cross-site scripting) et

  2. l’atténuation du vol de jetons.

Les attaques XSS (Cross-Site Scripting) avec stockage de jetons JWT non sécurisé

Les attaques XSS se produisent lorsqu’un attaquant injecte un code malveillant dans un site Web, obtenant ainsi un accès non autorisé à des données sensibles.

Le stockage de ces jetons dans des endroits non sécurisés peut les rendre vulnérables aux XSS.

JWT  

Si un attaquant parvient à obtenir le jeton JWT d’un utilisateur, il peut se faire passer pour cet utilisateur et obtenir un accès non autorisé aux ressources protégées.

Par conséquent, il est essentiel d’utiliser des techniques de stockage sécurisées pour éviter le vol de jetons.

Le stockage d’un jeton Web JSON dans le stockage local

est un mécanisme de stockage de navigateur intégré qui permet aux applications Web de stocker des données de manière persistante. Cependant, il est crucial de prendre en compte ses avantages et ses inconvénients lorsque vous l’utilisez pour stocker un jeton Web JSON.

Avantages de la simplicité de LocalStorage

  • : L’API est simple à utiliser, ce qui facilite la mise en œuvre.

  • Persistance : les données stockées dans restent disponibles même après que l’utilisateur a fermé le navigateur ou redémarré le système.

Inconvénients de

  • l’attaque XSS de LocalStorage : stockage JSON web tokens les rend vulnérables à une attaque XSS.

  • Manque de cryptage : LocalStorage ne fournit pas de cryptage intégré, les jetons cryptés rendent les données stockées pratiquement inaccessibles si un attaquant accède à l’appareil de l’utilisateur.

Vous obtenez certains avantages lorsque vous utilisez .

  • qui n’autorise que la transmission cryptée via HTTPS.

  • , qui permet d’atténuer les vulnérabilités XSS.

  • Options et

bonnes pratiques pour le stockage sécurisé des jetons Web JSON

Pour stocker en toute sécurité un jeton Web JSON dans le frontend, tenez compte des bonnes pratiques suivantes :

  1. Chiffrement : si vous choisissez de utilisez LocalStorage, chiffrez les jetons JWT avant de les stocker pour renforcer leur sécurité. Diverses bibliothèques et algorithmes de cryptage sont disponibles à cet effet.

  2. Validité courte : définissez une courte durée de vie pour les jetons JWT afin de minimiser la fenêtre d’opportunité pour les attaquants d’exploiter les jetons volés.

  3. Jeton d’actualisation : un mécanisme qui utilise de simples jetons Web pour actualiser les jetons et rejeter les jetons qui ont expiré aidera à protéger les données de votre utilisateur et à minimiser les risques de vol de données.

  4. et des indicateurs pour améliorer leur sécurité. property. 

js pour les raisons suivantes : Fonctionnalités de sécurité améliorées pour la 

transmission cryptée via HTTPS et le

Voici un exemple de la façon de définir ces indicateurs dans un nœud.

Application de la politique Same-Origin

Cela renforce la protection contre une attaque XSS et rend plus difficile pour les attaquants de compromettre les jetons.

Prise en charge de l’expiration et de la révocation

des jetons

Compatibilité avec les requêtes inter-domaines

Ce comportement est obtenu en configurant les paramètres CORS (Cross-Origin Resource Sharing) sur le serveur.

Voici un exemple d’utilisation du package CORS dans une application Node.js :

Assurez-vous de remplacer « http://example.com » par le ou les origines appropriées qui doivent être autorisées à effectuer des requêtes inter-domaines.

Persistance entre les sessions de navigateur

Contrairement

à

l’évolutivité des jetons volumineux

, ce qui les rend adaptés au stockage de jetons Web JSON plus volumineux ou de métadonnées supplémentaires.

et les paramètres.

Cette approche Offre un équilibre entre sécurité et commodité.

Comment cette approche permet-elle d’atténuer une attaque CSRF ?

Même si un nouveau jeton d’actualisation est généré par l’attaquant, il ne pourra pas lire la réponse s’il utilise un formulaire HTML.

Il est important de comprendre que pour empêcher les attaquants d’effectuer une récupération réussie ou une requête AJAX afin de lire la réponse, il faut que la politique CORS de votre serveur d’autorisation soit correctement configurée pour empêcher les demandes provenant de sites Web non autorisés.

Voici un guide étape par étape avec Node.js extraits de code pour chaque étape :

Étape 1 : Générer et émettre des jetons

Lorsqu’un utilisateur s’authentifie avec succès, générez à la fois un jeton Web JSON et un jeton d’actualisation côté serveur. Le jeton JSON contient des informations d’accès de courte durée, tandis que le jeton d’actualisation est un jeton de longue durée utilisé pour obtenir de nouveaux jetons Web JSON lorsqu’ils expirer.

Étape 2 : Enregistrer le jeton Web JSON dans la session du navigateur

Côté client, enregistrez le jeton Web JSON dans le stockage de la session du navigateur une fois l’authentification réussie. Cela garantit que le jeton reste disponible pendant la session de l’utilisateur, mais qu’il est effacé lorsque l’onglet du navigateur est fermé.

Il permet également de se protéger contre une attaque CSRF.

  • Le
  • drapeau The pour qu’il ne puisse être envoyé que via HTTPS.
  • Le drapeau chaque fois que possible pour empêcher CSRF. Cela ne peut être utilisé que si votre serveur d’autorisation a le même domaine que votre serveur frontal. Si les domaines sont différents, votre serveur d’autorisation doit définir des en-têtes CORS dans le backend ou utiliser d’autres méthodes pour s’assurer que la demande de jeton d’actualisation ne peut être exécutée avec succès que par les sites Web autorisés.

Étape 4 : Comment actualiser les jetons

Web JSON

Ce processus garantit une authentification continue sans que l’utilisateur n’ait à se connecter à nouveau manuellement.

Il existe très peu d’outils permettant aux développeurs de logiciels de protéger leurs applications Web contre les pirates informatiques, sans l’aide d’experts spécialisés en sécurité des applications.

Cependant, Cyber Chief est l’un de ces outils qui vous permet d’exécuter régulièrement des analyses de vulnérabilité avec un outil d’analyse de vulnérabilité d’application Web.

Découvrez comment Cyber Chief fonctionne dès maintenant pour voir non seulement comment il peut aider à empêcher les attaquants d’entrer, mais aussi pour voir comment vous pouvez vous assurer que vous livrez chaque version sans aucune vulnérabilité critique connue comme les attaques par injection de formule CSV et des milliers d’autres.

Cyber Chief vous aide à exécuter des tests automatisés pour la sécurité de vos applications Web, la sécurité de vos API et la sécurité de votre infrastructure cloud, et chaque abonnement est livré avec :

  • Les résultats de l’analyse de votre application pour le présence de OWASP Top 10 + SANS CWE 25 + des milliers d’autres vulnérabilités.
  • Une description détaillée des vulnérabilités trouvées.
  • Un niveau de risque pour chaque vulnérabilité, afin que vous sachiez quels points de terminaison GraphQL corriger en premier.
  • Correctifs recommandés pour chaque vulnérabilité, y compris des extraits de code le cas échéant.
  • Un coaching de sécurité à la demande de la part de nos experts en sécurité des applications pour vous aider à corriger les vulnérabilités plus rapidement.

Voici ce que vous pouvez faire ensuite.