Authentification / persistence
Le protocole HTTP est un protocole sans état. Cependant, les communications entre le client et le serveur nécéssitent parfois un "historique" lié à l'utilisateur, au navigateur ou à la session de navigation. Par exemple, l'ajout d'articles dans un panier d'achat nécessite de conserver l'état du panier entre chaque page. Il existe plusieurs moyens de conserver cet état : côté client ou côté serveur.
- Stockage côté client
- Cookies : petits fichiers stockés sur le client, envoyés au serveur à chaque requête. Ils peuvent être utilisés pour stocker des données persistentes.
- Web Storage : stockage local ou de session, accessible via JavaScript. Le stockage local persiste entre les sessions, tandis que le stockage de session est supprimé lorsque l'onglet est fermé.
- IndexedDB : base de données côté client, accessible via JavaScript. Elle permet de stocker des données structurées et persistantes.
- Stockage côté serveur
- Sessions : données stockées côté serveur, identifiées par un identifiant unique envoyé au client à chaque requète. Elles nécessitent aussi un stockage côté client (généralement un cookie) pour identifier la session/l'utilisateur.
Nous allons détailler ces techniques dans les sections suivantes.
Sécurité (2ème couche :-)
Que ce soit côté client ou côté serveur, il est important de se dire qu'un jour ou l'autre, les données stockées peuvent être compromises. Il est donc important de
- ne stocker que les données nécessaires (RGPD)
- s'assurer que les données sensibles soient chiffrées (ex: on ne stocke JAMAIS de mot de passe en clair, mais seulement un hash, permettant de vérifier l'authenticité du mot de passe sans avoir à le connaître)
- s'assurer que les transmissions soient sécurisées (HTTPS)