image/svg+xml $ $ ing$ ing$ ces$ ces$ Res Res ea ea Res->ea ou ou Res->ou r r ea->r ch ch ea->ch r->ces$ r->ch ch->$ ch->ing$ T T T->ea ou->r

Le module fs de Node.js

Le stockage de données

Une application JavaScript peut stocker des données localement en utilisant différentes techniques :

Utilisation de cookies

Nous présentons les pricipales opérations sur les cookies (réalisées sur l'object document.cookie):

à propos de la sécurité des cookies

Les cookies servant usuellement à stocker des identifiants de session, les cookies d'un site X ne doivent pas être récupérables par un site Y (risque de vol de session). Une page d'un site de domaine X ne peut lire les cookies que de ce domaine ; néanmoins si un attaquant parvient à insérer du code JavaScript dans la page du site X (attaque de type Cross Site Scripting dite XSS), il peut parvenir à communiquer le contenu d'un cookie vers un site externe. Les données affichées sur une page provenant d'utilisateurs doivent donc ne pas contenir de code JavaScript. On pourra se reporter sur cette page pour un exemple illustratif.

Utilisation de LocalStorage avec window.localStorage

L'API LocalStorage est d'usage synchrone : les appels retournent après avoir écrit ou lu une entrée (ce qui peut être potentiellement long pour des valeurs de grande taille). D'autre part il n'est possible de stocker que des chaînes de caractères ; les données d'autre nature doivent être systématiquement sérialisées/désérialisées.

Les opérations supportées sont :

  1. L'écriture d'une entrée : window.localStorage.setItem("cle1", "valeur1")
  2. La lecture de la valeur associée à une clé : let v = window.localStorage.getItem("cle1") (retourne null si l'entrée n'est pas définie)
  3. La suppression d'une entrée : window.localStorage.removeItem("cle1")
  4. La récupération du nombre d'entrées dans l'espace de stockage : let l = window.localStorage.length
  5. La récupération de la clé d'indice i : let k = window.localStorage.getItem(i)
  6. L'effacement de toutes les entrées : window.localStorage.clear()

Il existe également l'objet window.sessionStorage qui s'utilise de la même façon mais offre un espace de stockage temporaire qui sera purgé lors de la fermeture du navigateur.

Pour stocker facilement un objet, on utilisera JSON.stringify(obj) pour transformer l'objet en chaîne (sérialisation) et JSON.parse(s) pour l'opération inverse (désérialisation). Voici un exemple :

let obj = {"1": "un", "2": "deux", "a": [1,2,3]};
window.localStorage.setItem("obj", JSON.stringify(obj));
let obj2 = JSON.parse(window.localStorage.getItem("obj"));

Utilisation de IndexedDB

A venir très bientôt...