La question dit tout vraiment. Je souhaite fournir un service, mais je ne souhaite pas stocker les données moi-même dans une base de données. Avec toutes les nouvelles récentes concernant le piratage, etc., il me semble qu'il est plus agréable que les clients aient un contrôle total sur leurs données.
Le problème est que les données stockées sont potentiellement sensibles. Ce que j'allais faire, c'était ... lorsqu'un client visitait le site Web, une question lui était posée: "Êtes-vous sur un ordinateur personnel ou sur un ordinateur public". S'ils sont sur un ordinateur public, le site refuserait l'accès.
S'ils étaient sur un ordinateur personnel, ils seraient alors invités à définir un mot de passe. Toutes leurs données seraient alors cryptées avec ce mot de passe. Maintenant, évidemment, ce n'est pas trop sécurisé. La méthode de chiffrement serait en JavaScript et le mot de passe en texte brut. Je suppose donc qu’un utilisateur averti pourrait localiser le mot de passe dans le stockage local et accéder aux données.
Je pense cependant que ce n'est pas trop un problème. Si vous utilisez un ordinateur personnel, les chances que cela se produise sont faibles, car… quelqu'un d'autre aurait besoin d'accéder à son compte d'utilisateur spécifique sur l'ordinateur, quelqu'un d'autre aurait besoin de connaître le site… quelqu'un d'autre aurait besoin de comprendre localStorage et comment y accéder. Les données sensibles ne compromettent en rien leur identité. Il enregistre simplement quelque chose que la plupart des gens n'aimeraient pas publier.
La question est donc de savoir si le stockage local est suffisamment sécurisé.
Question supplémentaire .. combien il est difficile d’effacer votre stockage local? Je ne voudrais pas que les utilisateurs effacent leurs données par accident.
Enfin, vaut-il la peine de chiffrer / déchiffrer leurs données comme si vous aviez le mot de passe pour accéder au site ..
la source
Réponses:
Pourquoi ne pas simplement stocker le mot de passe, même pas dans un stockage local? Vous pouvez utiliser une fonction de dérivation de clé pour obtenir une clé du mot de passe. Avec un sel et un nombre raisonnable d'itérations, cela devrait être décemment sécurisé.
la source
L'utilisation de JavaScript avec un stockage local est aussi sécurisée que votre serveur ainsi que la connexion entre le navigateur et le serveur.
Si quelqu'un réussit à modifier votre serveur et à servir différents fichiers JS ou à modifier (lors de la transmission) les fichiers JS envoyés du serveur au client, il peut tout faire avec les données qu'il souhaite.
De plus: comme les données sont sur le client, vous ne pouvez rien faire pour les protéger. Par exemple, sur un serveur ordinaire, vous pouvez par exemple limiter la fréquence d'accès (par exemple, un mot de passe distant sécurisé: un seul mot de passe lu dans les 10 minutes). Tout cela est inutile si les données sont sur le client et que tout le code travaillant avec les données peut être manipulé par un attaquant.
Après tout, même avec le stockage local, vous devez sécuriser votre application Web! Pourquoi faire des choses sur le serveur (espérons-le) sécurisé alors? Sinon, pourquoi ne pas utiliser un programme local installé sur le client non plus?
la source
Pourquoi ne pas obtenir une clé du serveur utilisée pour décrypter les données localStorage?
Cela pourrait fonctionner comme ceci:
Cela ne devrait permettre l'accès que lorsqu'un utilisateur a une session établie.
la source
généralement ce n’est pas difficile d’effacer la mémoire de stockage locale, mais cela dépend du navigateur. Vous devez cependant vous familiariser avec les outils de développement des navigateurs (firebug, webkit, etc.).
Pensez-y comme vous pensez aux cookies. Vous ne devez jamais conserver des données sensibles dans un stockage local. mots de passe, numéros de carte de crédit, peu importe.
vous pouvez toujours implémenter certaines fonctionnalités pour effacer le stockage local après une x quantité d'inactivité, mais cela ne résoudra pas le problème de sécurité. C'est comme si une session automatique expirait. Le même problème se pose, si une personne quitte son ordinateur et que quelqu'un d'autre s'assoit avant l'expiration de la session, elle peut faire des choses.
la source
Deux questions:
si vous stockez des mots de passe en texte brut et que vous vous fiez ensuite au fait qu'il est peu probable qu'ils soient trouvés, c'est simplement de la sécurité par l'obscurité. Il suffit de stocker les données en texte clair et de s’appuyer sur la même hypothèse (toujours pas sûr, mais pas de faux sentiment de sécurité)
sur la plupart des navigateurs, si les personnes effacent leur cache, elles suppriment également leur contenu localStorage. Les utilisateurs ne s'attendent pas à perdre des données importantes lorsqu'ils effacent leur historique et leur cache.
Je pense que vous surestimez le contenu de LocalStorage. Si vous souhaitez utiliser une base de données locale qui joue bien avec webapps vous pouvez jeter un oeil à CouchDB de couchapps .
Mais ne stockez pas le mot de passe.
la source
Vous pouvez utiliser javascrypt . Demander à l'utilisateur un mot de passe qui deviendrait la clé de cryptage / décryptage
Vous n'avez pas besoin de stocker le mot de passe, mais demandez-le à chaque fois que l'utilisateur ouvre la page.
Peut-être stocker, si l'utilisateur veut, et maintenant les implications.
Mais pour rejoindre le commentaire de stivlo, qu’en est-il:
Je pense que vous devriez reconsidérer le début du raisonnement. Eviter le nuage à cause d'événements récents et sensationnels est une conclusion rapide.
la source