Code On Fire passionné à propos de Cool Code

28 Jul/09 1

Comment sécuriser les informations de connexion pour l'Ajax

JavaScript de nombreux clients et d'autres qui font usage de repos ou d'autres services Web doivent utiliser les informations d'authentification pour permettre l'accès des utilisateurs finals de ces services.

Il ya plusieurs façons d'obtenir les informations d'identification sur le serveur. Une méthode populaire utilise HTTP1.1 Auth, soit digérer ou de base. Le problème avec cette méthode est qu'elle ne cache pas vos informations d'identification du monde. Anybody Listening sur votre trafic Web est essentiellement en mesure d'obtenir vos informations d'identification des en-têtes.

Une autre méthode, sans doute plus facilement utilisée par la majorité, est d'inclure les informations de connexion dans le POST ou GET appels faits aux services web. Et cela est tout aussi exposés.

http://mywebserver.com/mywebservice/?user=admin&pass=1234
ne fait pas pour le transport de haute sécurité très.

SSL est vraiment le seul moyen d'être sûr que vos informations d'identification restent cachés du reste du monde.

Générées par le serveur jetons pour Brouiller les informations de connexion

J'ai pris une autre tactique. Il dirige le cours suivant:

  1. Le client demande un hasard jeton du serveur à utiliser au cours de sa session.
  2. Une fois qu'il reçoit le jeton du client concatène le jeton à la fin du mot de passe, puis fait un hash MD5 sur le tout.
  3. Lorsque les pouvoirs sont nécessaires par le serveur, le client passe ensuite user = 'username' = & passhash [md5 (mot de passe + jeton)]
  4. Le serveur compare avec le même processus sur sa fin. Si les deux hachages match, puis les mots de passe utilisés dans les tables de hachage doit être la même aussi bien.

La beauté de cette méthode est que, même si c'est une méthode fiable à 100% pour les identifier correctement les informations d'identification correctes, il est également impossible d'inverser le processus et obtenir le mot de passe en arrière.

Prenant les choses un peu plus loin

La première étape pour moi était d'utiliser [md5 (mot de passe + jeton)]. J'ai maintenant mis à jour l'utiliser une variété d'informations, je tiens à cacher:
[Md5 (nom d'utilisateur + mot de passe + + my_ip jeton)] qui a construit en quelques site scripting obfuscation-cross construit po

Un hacker retors et très zélé peut encore pirater votre session avec un certain effort. Et vous pouvez être sûr qu'il ne vaut pas son pendant en remplaçant régulièrement le jeton pour la session en cours.

API JavaScript KnowledgeTree

En tant que développeur sur KnowledgeTree Je travaille actuellement sur le plateau de bibliothèques JavaScript qui exposent la fonctionnalité de serveur via une API. Une composante centrale de KnowledgeTree est-il en matière de sécurité strictes. La méthode mentionnée ci-dessus (ou une variante de celui-ci) est en train d'être mis en œuvre pour KnowledgeTree Japi.

* KnowledgeTree est un OpenSource Document Management System pour les PME à des entités de l'entreprise.

En avant et vers le haut!

Profitez de cet article?

Inscrivez-vous à notre flux RSS!

Commentaires (1) Trackbacks (1)
  1. Je remarque que beaucoup de gens de venir ici à la recherche du script MD5 j'utilise. Il ya beaucoup d'entre eux là-bas, j'ai choisi d'utiliser celle-ci:

    http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_md5/

    N'oubliez pas d'inclure la fonction utf8 partir du même site pour assurer md5 œuvres.


Laissez un commentaire