2010-04-15 4 views
12

Je suis à la recherche d'une solution d'application Web hors ligne utilisant HTML5. La fonctionnalité est tout ce dont j'ai besoin MAIS les données stockées peuvent être directement interrogées directement dans le navigateur et donc complètement non sécurisé!HTML5 Web DB Security

Est-il possible de crypter/masquer afin que les données soient sécurisées?

Merci, D.

+0

S'il vous plaît voir aussi ici: http://stackoverflow.com/questions/5976046/html5-client-side-data-encryption-what- are-my-options/6686558 # 6686558 – user832834

Répondre

20

Il y a deux préoccupations au stockage local en HTML5 -

  1. Un site de lecture de données en ligne qu'un autre site a enregistré dans un navigateur des utilisateurs
  2. Un utilisateur final interrogation vos données de sites Web hors connexion directement

Pour 1, les navigateurs appliquent les restrictions de même domaine à localStorage (ou le sqllit e support de base de données que safari a), ainsi les autres sites n'auront pas accès aux données que vous stockez. Cependant, n'oubliez pas que si votre site a des vulnérabilités XSS, il serait possible de voler les données.

Pour 2, vous ne pouvez pas l'empêcher. C'est juste comme un cookie - l'utilisateur peut choisir de voir/supprimer/modifier.

Le cryptage des données est possible (voir http://farfarfar.com/scripts/encrypt/), mais inutile. Vous ne pouvez pas avoir une seule clé/mot de passe global, car un attaquant peut facilement trouver la clé à partir du code javascript. L'utilisation d'un mot de passe saisi par l'utilisateur pour crypter/décrypter est possible, mais les bibliothèques de cryptage côté client ne sont pas suffisamment matures ou testées. Il y a probablement des tonnes de façons de le casser. Donc, pour l'instant atleast, ne stockez pas de données sensibles dans localStorage.

+0

Le lien vers http://farfarfar.com/scripts/encrypt/ n'est pas actif – Brian

+2

http://code.google.com/p/gwt-crypto/ est une bibliothèque cryptographique mature sûr pour une utilisation dans le code côté client (bien qu'il utilise GWT) – Tyson

2

Si vous stockez des données sur l'ordinateur de l'utilisateur, l'utilisateur peut toujours lire, peu importe combien vous chiffrez [en supposant que vous n'utilisez pas un hachage ...]

Les données sensibles se poursuit côté serveur, toujours.

+1

Pas nécessairement. Si les données cryptées ne peuvent être décryptées qu'avec une clé que vous devez obtenir du serveur à chaque fois (c'est-à-dire non stockée dans JS ou sur la page), et si le serveur ne fournit la clé que lorsque l'utilisateur est authentifié , puis entre les sessions légitimes de l'utilisateur, les données cryptées localement sont sécurisées. –

+0

Le hachage n'est pas un cryptage non plus. – Nisk

+0

@ Mr.TA qui ne fonctionnerait pas dans un scénario hors ligne. – drogon