Le LocalStorage est une API JavaScript fournie par les navigateurs modernes qui permet de stocker des données localement dans le navigateur de l'utilisateur, sous forme de paires clé-valeur. Contrairement aux cookies, les données dans LocalStorage ne sont pas envoyées automatiquement aux serveurs dans chaque requête HTTP et ne sont pas supprimées lorsque l'utilisateur ferme son navigateur ou l'onglet. Elles restent accessibles jusqu'à leur suppression explicite.
localStorage.setItem('clé', 'valeur');const valeur = localStorage.getItem('clé');localStorage.removeItem('clé');localStorage.clear();LocalStorage ne peut stocker que des chaînes de caractères. Pour stocker des objets ou des tableaux, il faut les convertir en JSON.
const user = { name: 'Alice', age: 25 };
localStorage.setItem('user', JSON.stringify(user));
// Pour récupérer l'objet :
const userData = JSON.parse(localStorage.getItem('user'));-
Persistance des données :
- Les données restent stockées même après la fermeture du navigateur ou un redémarrage de l'appareil, contrairement aux SessionStorage qui efface les données à la fermeture de l'onglet ou du navigateur.
-
Facilité d'utilisation :
- L'API LocalStorage est simple à utiliser avec ses méthodes
setItem,getItem,removeItem, etclear.
- L'API LocalStorage est simple à utiliser avec ses méthodes
-
Capacité de stockage plus grande que les cookies :
- Le LocalStorage permet de stocker jusqu'à 5 à 10 MB de données, ce qui est bien plus que les cookies, limités à environ 4 KB.
-
Aucune transmission automatique des données :
- Contrairement aux cookies, les données dans LocalStorage ne sont pas envoyées avec chaque requête HTTP. Cela réduit la surcharge réseau.
-
Accès limité aux chaînes de caractères :
- LocalStorage ne peut stocker que des chaînes de caractères. Pour stocker des objets ou des tableaux, il est nécessaire de passer par la conversion JSON (
JSON.stringifyetJSON.parse), ce qui rajoute une étape.
- LocalStorage ne peut stocker que des chaînes de caractères. Pour stocker des objets ou des tableaux, il est nécessaire de passer par la conversion JSON (
-
Vulnérabilité aux attaques XSS :
- Les données stockées dans LocalStorage peuvent être accessibles et modifiées via JavaScript. Cela signifie que si votre site est victime d'une attaque Cross-Site Scripting (XSS), un attaquant pourrait voler ou manipuler ces données. LocalStorage ne doit pas être utilisé pour stocker des données sensibles comme des jetons d'authentification ou des mots de passe.
-
Pas d'expiration automatique :
- Contrairement aux cookies, qui peuvent être configurés pour expirer après un certain temps, les données dans LocalStorage sont conservées indéfiniment jusqu'à leur suppression manuelle ou par du code.
| Caractéristique | LocalStorage | SessionStorage | Cookies | IndexedDB |
|---|---|---|---|---|
| Taille | 5 à 10 MB | 5 à 10 MB | 4 KB par cookie | Limite beaucoup plus élevée (en fonction du navigateur) |
| Durée de vie | Persistant, jusqu'à suppression manuelle | Supprimé à la fermeture de l'onglet ou du navigateur | Peut être configuré avec une date d'expiration | Persistant, jusqu'à suppression manuelle |
| Types de données | Chaînes de caractères uniquement | Chaînes de caractères uniquement | Chaînes de caractères uniquement | Données structurées (objets, tableaux, fichiers binaires) |
| Accessibilité JavaScript | Disponible via JavaScript | Disponible via JavaScript | Configurable (HttpOnly pour empêcher l'accès JavaScript) |
Accessible via des API plus complexes (asynchrone) |
| Transmission automatique | Non | Non | Oui, envoyé avec chaque requête HTTP | Non |
| Sécurité | Vulnérable aux attaques XSS | Vulnérable aux attaques XSS | Peut être protégé avec HttpOnly, Secure, SameSite |
Sécurisé, mais plus complexe à utiliser |
| Utilisation principale | Stockage persistant côté client pour des données non sensibles | Stockage temporaire pendant la session | Stockage persistant ou temporaire avec transmission automatique | Stockage avancé pour grandes quantités de données structurées |
- Stocker des préférences utilisateur : Sauvegarder des paramètres comme le thème, la langue, ou les choix de l'utilisateur.
- Conserver des données non sensibles : Sauvegarder des informations temporaires comme le contenu d'un formulaire ou d'un panier d'achats.
- Sauvegarder des données entre les sessions : Permet de persister des informations même après la fermeture du navigateur.
- Stocker des données sensibles : Comme les jetons d'authentification (JWT), mots de passe, ou données personnelles. LocalStorage est vulnérable aux attaques XSS.
- Lorsque des délais d'expiration sont nécessaires : Utilisez les cookies pour des données nécessitant une expiration automatique.
- Ne pas stocker de données sensibles : Utilisez-le uniquement pour des informations non critiques.
- Valider les données récupérées : Ne faites pas confiance aux données stockées dans le LocalStorage, elles peuvent être modifiées côté client.
- Limiter la taille des données stockées : Bien que LocalStorage puisse stocker jusqu'à 5 à 10 MB, essayez de limiter l'utilisation à des données légères.
- Utiliser le chiffrement : Si vous devez absolument stocker des données sensibles (bien que déconseillé), pensez à les chiffrer avant de les stocker.
Le LocalStorage est un excellent outil pour stocker des données localement et persister des informations d'une session à l'autre. Cependant, il a ses limites, notamment en termes de sécurité et de types de données. Dans certaines situations, il peut être préférable d'utiliser d'autres options comme SessionStorage, Cookies ou IndexedDB en fonction des besoins spécifiques de votre application.
Utilisez-le judicieusement en tenant compte de ses avantages et inconvénients, et n'oubliez pas de suivre les bonnes pratiques pour garantir la sécurité de vos utilisateurs.