web-dev-qa-db-fra.com

Migrer les comptes d'utilisateurs hors du système avec des mots de passe hachés

J'ai un système avec quelques milliers de comptes utilisateur que je dois migrer vers une nouvelle plate-forme. Le système stocke un mot de passe haché, non chiffré ni (en clair) en texte brut. De plus, je n'ai pas les détails du hachage facilement disponibles.

Quels sont les moyens efficaces de faire la transition? Une idée me vient à l’esprit:

  1. En avance, je peux migrer toutes les données. Les utilisateurs actuels de l'ancienne plate-forme auront un compte et toutes leurs données dans la nouvelle plate-forme.
  2. Extrayez une partie du code qui gère actuellement l'authentification et transformez-le en une sorte de service qui vérifiera la validité du nom d'utilisateur/mot de passe.
  3. La nouvelle plate-forme peut d’abord vérifier sa propre authentification pour savoir si le mot de passe a été transféré. Si ce n'est pas le cas, il peut appeler le service de l'autre plate-forme pour déterminer s'il est valide dans l'ancien système.
  4. Si ce n'est pas valide, alors il indique à l'utilisateur que son identifiant est incorrect.
  5. S'il est valide, il connaît maintenant le mot de passe correct et peut renseigner son propre tableau d'utilisateurs avec le mot de passe (selon le schéma utilisé par la plate-forme).
3
Larsenal

Je suis passé par un problème similaire récemment, sauf que je n'avais pas accès à l'algorithme de hachage utilisé. Je pense que vous avez 2 choix.

  1. Déplacez tous les profils utilisateur vers le nouveau système et créez une colonne supplémentaire contenant l'ancien mot de passe.
  2. Lorsque l'utilisateur se connecte pour la première fois, votre système ne verra aucun compte existant dans le nouveau système, mais un hachage existe depuis l'ancien système. Votre système conservera une copie pré-hachée du mot de passe et comparera la version hachée à l'ancienne.
  3. Si les anciennes correspondances de hachage, définissez le mot de passe du nouveau système sur celui envoyé.

Cependant, si vous constatez que vous n'avez pas accès à l'algorithme de hachage et que vous avez l'adresse électronique de chaque utilisateur, vous avez un autre choix. C'est ce que j'ai fait en réalité:

  1. Copiez tous les noms d'utilisateur, adresses e-mail et informations de l'ancien au nouveau système. Mettez une colonne d'indicateur dans la table indiquant que l'utilisateur provient de l'ancien système.
  2. Lorsque l'utilisateur se connecte au nouveau système pour la première fois, le nouveau système verra qu'il a un compte mais pas de mot de passe.
  3. Demandez à votre système de mettre un message à l’écran disant: "Nous avons mis à jour notre site Web et votre compte utilisateur a été converti. Vous recevrez bientôt un e-mail avec un nouveau mot de passe temporaire (assurez-vous que le mot de passe ou le lien spécial ne fonctionne que brièvement). période de temps).
  4. Envoyez à l'utilisateur un mot de passe temporaire sur votre nouveau site pour lui permettre de se connecter. Une fois qu'il se connecte pour la première fois, demandez-lui de réinitialiser son mot de passe.

La deuxième option a plutôt bien fonctionné pour moi. Je n'ai pratiquement eu aucune plainte de l'utilisateur et c'est relativement sécurisé, car c'est la procédure normale pour un utilisateur de réinitialiser son mot de passe oublié.

3
Ben Hoffman

Avant d’avoir trop de problèmes, avez-vous examiné ce que pourrait être l’algorithme de hachage? S'ils étaient suffisamment sains pour utiliser des mots de passe hachés, nous espérons qu'ils le seraient aussi pour utiliser un algorithme de hachage commun (MD5, SHA1, etc.).

Cela vaut peut-être la peine d’essayer quelques options communes pour voir si vous pouvez procéder à une ingénierie inverse de ce qu’ils faisaient.

En outre, vous mentionnez "extraire une partie du code qui effectue actuellement l'authentification". Comment se fait-il que vous ayez le code, mais pas l'algorithme de hachage?

0
Eric Petroelje