2010-03-17 6 views
1

J'ai un service Web Java et un client Web Java qui utilise ce service. L'une des fonctions est de créer un nouveau compte d'utilisateur. Mes deux préoccupations sont:Traitement sécurisé des mots de passe

  1. Comment vais-je envoyer le mot de passe de l'utilisateur en toute sécurité à partir du client.
  2. Comment stocker le mot de passe de l'utilisateur en toute sécurité sur le serveur.

Comment puis-je les obtenir? Je connais la théorie derrière la sécurité, les algorithmes de sécurité, etc. Est-ce que quelqu'un peut me donner des conseils sur la façon de coder? Est-ce que quelqu'un pourrait m'indiquer quelques bons exemples (et si possible pas compliqués) à suivre puisque j'ai trouvé quelques exemples sur Internet très déformés?

Merci beaucoup et salutations, Krt_Malta

Répondre

3

En règle générale, si vous êtes préoccupé par le mot de passe transmis en clair du client Web au service, vous devez exécuter le service via SSL. Sur le back-end, je ne stocke jamais le mot de passe en clair, le hachage avant de le stocker. Assurez-vous d'utiliser des sels. Lorsque l'utilisateur se connecte à une date ultérieure, je hache le mot de passe qu'il a soumis, puis compare la valeur hachée avec la valeur hachée précédemment stockée. Si elles correspondent, l'utilisateur s'est authentifié. Dans mon cas, il y a plus que ça (avec des caractéristiques de souvenir, etc.), mais ça en fait partie. J'utilise le cadre Apache Shiro pour vous aider dans cette tâche. Il est assez léger et ne nécessite pas d'environnement Web, mais il fonctionnera également avec un environnement Web. Il s'intègre à Spring et à d'autres solutions, mais encore une fois, ce n'est pas nécessaire. Probablement la peine de vérifier.

+0

Ne le cryptez pas, ne le croyez pas. – Gumbo

+1

@Gumbo: Oui, exactement, c'est ce que je voulais dire. Hash it. Je vais mettre à jour ma réponse. – Tauren

+0

Merci pour la réponse rapide :) Je cours le service Web sur un Tomcat 6.0. Si j'y ajoute SSL (trouvé un bon article ici: http://mircwiki.rsna.org/index.php?title=Configuring_Tomcat_to_Support_SSL) le mot de passe sera-t-il transmis en toute sécurité? Dois-je changer quelque chose du client? –

2

La règle de John: essayez toujours d'éviter d'écrire votre propre logiciel de sécurité. Il est trop facile de faire des erreurs comme le cryptage au lieu du hachage, sans utiliser de sels, etc. Vous ne trouverez pas beaucoup d'experts en sécurité pour réviser votre code, mais vous pouvez vous attendre à voir les systèmes Open Source les plus populaires. Premièrement, pouvez-vous utiliser OpenID ou Shibboleth pour ne pas donner aux utilisateurs un mot de passe supplémentaire? Je vous remercie si je pouvais utiliser un compte existant!

Si la réponse est non, alors pour le stockage de mot de passe, essayez un serveur LDAP gratuit tel que OpenDS ou Apache Directory Server.

Utilisez Spring Security ou similaire pour gérer les connexions, et le remember-me.

Vous devrez utiliser SSL (https) comme indiqué dans les autres réponses si vous souhaitez que votre système communique les mots de passe du client au serveur.

Questions connexes