web-dev-qa-db-fra.com

J'envoie simplement le nom d'utilisateur et le mot de passe via https. Est-ce correct?

Lorsqu'un utilisateur se connecte à mon site, il m'envoie son nom d'utilisateur et son mot de passe via https. Outre le SSL, il n'y a pas d'obscurcissement spécial du mot de passe - il vit en mémoire dans le navigateur en clair.

Y a-t-il autre chose que je devrais faire? Dois-je le garder haché d'une manière ou d'une autre, même en RAM?

53
Riley Lark

C'est bon. Vous n'avez rien d'autre à faire. Il n'est pas nécessaire de le hacher ou de le masquer dans la RAM.

Vous devez faire attention à hacher le mot de passe de manière appropriée côté serveur avant de le stocker dans la mémoire persistante (par exemple, dans une base de données), et vous devez prendre soin d'utiliser des méthodes appropriées pour le hachage de mot de passe. Voir, par exemple, Comment hacher en toute sécurité les mots de passe? , Quelle méthode de hachage de mot de passe dois-je utiliser? , Algorithme de hachage de mot de passe le plus sécurisé? , Des experts en sécurité recommandent-ils bcrypt pour le stockage des mots de passe? .

Si vous souhaitez offrir une sécurité supplémentaire à vos utilisateurs, voici quelques étapes à suivre:

  • Utilisez SSL/TLS à l'échelle du site. Toute tentative de visiter votre site via HTTP doit immédiatement rediriger vers HTTPS.

  • Activez HSTS sur votre site. Cela indique aux navigateurs de se connecter uniquement via HTTPS. Paypal l'utilise. Il est pris en charge dans les versions récentes de Firefox et Chrome.

Je ne dis pas que vous devez faire ces choses (bien que SSL/TLS à l'échelle du site fasse une grande différence). Mais ce sont quelques options qui peuvent aider à renforcer la sécurité contre certains vecteurs d'attaque courants.

43
D.W.

Une autre chose que vous pourriez faire serait d'utiliser des certificats clients. Le serveur ne peut garantir qu'il n'y a pas de MitM en exigeant un certificat client. Sinon, il doit faire confiance au client pour valider correctement l'absence d'un MitM. C'est plus que beaucoup de services devraient être prêts à faire confiance.

6
Steve Dispensa