Enregistrement des informations d'identification dans le stockage local

Pourrais-je utiliser de manière sécurisée le stockage local au lieu des cookies pour stocker les informations d'identification de la session?

Dois-je stocker un hash chiffré?

EDIT: Est-ce que cela serait assez sécurisé?

Localstorage est tout aussi vulnérable à la lecture de JavaScript que les cookies.

Localstorage peut être lu en utilisant JavaScript à partir du même domaine, si vous contrôlez tous les JS sur le domaine, cela ne devrait pas poser de problème. Mais si un autre code est exécuté (par injection, par exemple, ou si vous partagez le domaine avec quelqu'un d'autre), ils pourront accéder aux données de stockage.

Il en est de même pour les cookies, mais généralement, le cookie est défini sur HTTPOnly, donc JavaScript ne peut pas le lire.

Dans l'un ou l'autre cas, les informations de connexion au texte simple ne doivent plus être stockées ni dans les cookies ni dans le stockage local, comme si quelqu'un les saisissait, ils peuvent continuer à faire une nouvelle session pour eux-mêmes.

Vous devez crypter un identifiant authentifié (tel que leur ID utilisateur) avec l'heure de la date d'expiration de la session, puis enregistrer cette valeur dans un cookie ou un stockage local. Ce jeton est ensuite validé sur chaque appel du serveur.

Si vous utilisez le stockage local, pourquoi stocker les informations d'identification des utilisateurs ou tout ce qui en dérive?

Ce que j'ai cherché à faire est:

Lors d'une connexion réussie, générez une chaîne complètement aléatoire sans rapport avec les informations d'identification des utilisateurs et conservez-la dans la base de données, ainsi qu'une date d'expiration. Je transmettrai ensuite cette chaîne à mon js pour être stockée dans un stockage local.

À partir de ce moment-là, tant que cette option de stockage local correspond à la base de données et que le délai d'expiration n'a pas expiré, je les considère automatiquement comme connectés.

De cette façon, il n'y a aucun risque concernant l'exposition des informations d'identification de l'utilisateur à partir du stockage local. Cependant, avec cette chaîne unique temporaire qui fonctionne essentiellement comme un ID de session, vous devrez toujours être conscient et prendre des précautions contre les risques associés au détournement de session.

En tout cas, je comprends bien que le stockage local est aussi sécurisé que le serveur derrière votre site. Par là, je veux dire que le stockage local n'est accessible que par des scripts entrant dans votre propre domaine, donc vous êtes en sécurité aussi longtemps que le seul code frontal en cours d'exécution est le vôtre.

Votre serveur doit générer un jeton – une donnée unique (pour le serveur) qui ne peut pas être utilisée pour découvrir le nom d'utilisateur / mot de passe. Seul ce jeton peut être stocké sur la machine de l'utilisateur sous quelque forme que ce soit. Ni le stockage local ni les cookies ne sont sécurisés. Donc les mêmes règles s'appliquent à eux à cet égard.

Vous devriez avoir certains moyens pour expirer un tel jeton sinon une fois volé tel jeton peut être utilisé au lieu de véritables informations d'identification.