2012-08-31 4 views
6

Je travaille sur une application web pour mon projet Masters. Il s'agit d'un système permettant aux professeurs de gérer des projets étudiants. Il utilise Java pour le code côté serveur, HSQLDB pour la base de données et JSP pour la couche de présentation, et il fonctionne sur tomcat. Les données qui seront stockées n'incluent aucune information sensible (identification de l'étudiant, information financière, rien de semblable) mais les noms d'utilisateur et les mots de passe sont obligatoires, donc je veux protéger les mots de passe eux-mêmes si un étudiant utilise un mot de passe. mon application qu'ils utilisent pour une autre application plus importante (cela arrivera sans doute même si je dis aux gens de ne pas le faire).Transmettre correctement et sécuriser les mots de passe des utilisateurs pour une application Web

Je n'ai jamais regardé ce genre de chose avant et je suis plutôt perdu. J'ai trouvé un bon article expliquant comment utiliser Java à create a hash of a password, et j'ai trouvé des informations dans le tomcat documentation expliquant comment définir le schéma de hachage utilisé dans les domaines et comment faire SSL with tomcat, ainsi qu'un JavaScript library pour créer des hachages à partir de mots de passe, mais Je ne suis pas sûr de savoir comment assembler toutes les pièces et de quelles pièces j'ai besoin exactement. Si j'utilise la bibliothèque JavaScript pour hacher le mot de passe et utiliser SSL pour l'étape de connexion (inutile par la suite puisque les autres données n'ont pas besoin d'être protégées), ne stockez que les versions hachées des mots de passe dans la base de données Est-ce suffisant? Ou dois-je faire quelque chose de plus? J'ai couru à a question où les réponses parlaient de PBKDF2 et d'autres choses, mais cela me rendait plus confus ... Si je devais utiliser l'un des schémas mentionnés dans ces réponses, comment vais-je faire? Je n'ai pas vu de références à eux dans Tomcat ou autre documentation donc je ne sais pas comment je les utiliserais ...

Si quelqu'un peut éclaircir ma confusion et me dire quelle est la bonne façon de transmettre en toute sécurité et stocker les mots de passe est, je l'apprécierais vraiment.

Répondre

3

SSL prend soin de sécuriser l'ensemble de la couche de transport. Vous n'avez pas besoin de vous soucier des données envoyées via HTTPS.

Ne stockez jamais de vrais mots de passe dans votre base de données. Ne stocker que les hachages salés préparés avec des fonctions de hachage correctement sécurisées (c'est-à-dire pas MD5). Utilisez un sel différent pour chaque hash. Si vous suivez ces principes, quels que soient les composants utilisés, vous disposerez d'un mécanisme de stockage de nom d'utilisateur/mot de passe.

+2

assurez-vous de _salt vos hashes_! – jtahlborn

+0

@jtahlborn, Oui! Comment aurais-je pu l'oublier? Ajouté à la réponse, merci! – Brad

+0

vous pouvez mettre à l'épreuve le stockage en stockant l'algorithme utilisé avec chaque mot de passe. Cela vous permet de mettre à jour l'algorithme dans le futur sans casser les utilisateurs existants. – jtahlborn

Questions connexes