desenv-web-rp.com

Migrar contas de usuário fora do sistema com senhas com hash

Eu tenho um sistema com alguns milhares de contas de usuário que preciso migrar para uma nova plataforma. O sistema armazena uma senha com hash, não criptografada ou (graças a Deus) texto sem formatação. Além disso, não tenho os detalhes do hash prontamente disponíveis.

Quais são algumas maneiras eficazes de fazer a transição? Uma ideia me vem à cabeça:

  1. Com antecedência, posso migrar todos os dados. Os usuários atuais da plataforma antiga terão uma conta e todos os dados na nova plataforma.
  2. Retire parte do código que atualmente lida com autenticação e transforme-o em um tipo de serviço que verificará a validade do nome de usuário/senha.
  3. A nova plataforma pode primeiro verificar sua própria autenticação para verificar se a senha foi transferida. Caso contrário, poderia chamar o serviço na outra plataforma para determinar se é válido no sistema antigo.
  4. Se não for válido, informa ao usuário que o login estava errado.
  5. Se for válido, agora ele sabe a senha correta e pode preencher sua própria tabela de usuários com a senha (de acordo com o esquema que a plataforma usa).
3
Larsenal

Eu passei por um problema semelhante recentemente, exceto que não tinha acesso ao algoritmo de hash que estava sendo usado. Eu acho que você tem 2 opções.

  1. Mova todos os perfis de usuário para o novo sistema e tenha uma coluna extra com seu antigo hash de senha.
  2. Quando o usuário efetua login pela primeira vez, seu sistema não vê nenhuma conta no novo sistema, mas existe um hash no sistema antigo. Seu sistema manterá uma cópia pré-hash da senha e comparará a versão do hash com o hash antigo.
  3. Se o antigo hash corresponder, defina a senha no novo sistema para o que eles enviaram.

No entanto, se você achar que não tem acesso ao algoritmo de hash e tiver o endereço de e-mail de cada usuário, terá outra opção. Isto é o que eu fiz na verdade:

  1. Copie todos os nomes de usuário, endereço de email e informações do sistema antigo para o novo. Coloque uma coluna de sinalizador na tabela que indica que o usuário é do sistema antigo.
  2. Quando o usuário faz login no novo sistema pela primeira vez, o novo sistema verá que eles têm uma conta, mas não têm senha.
  3. Faça com que seu sistema coloque uma mensagem na tela dizendo algo como "Atualizamos nosso site e sua conta de usuário foi convertida. Você receberá um e-mail em breve com uma nova senha temporária (verifique se a senha ou o link especial funciona apenas por um curto período) período de tempo).
  4. Envie ao usuário uma senha temporária para o seu novo site, que permitirá que eles se conectem. Depois que eles se conectarem pela primeira vez, redefina a senha para o que quiserem.

A segunda opção funcionou muito bem para mim. Eu praticamente não tive reclamações de usuários e é relativamente seguro, pois esse é o processo normal de um usuário redefinir sua senha esquecida.

3
Ben Hoffman

Antes de enfrentar muitos problemas, você já analisou qual poderia ser o algoritmo de hash? Se eles eram sensatos o suficiente para usar senhas com hash, esperançosamente eram sensatos o suficiente para usar um algoritmo de hash comum (MD5, SHA1, etc).

Pode valer a pena experimentar algumas opções comuns para ver se você pode fazer engenharia reversa do que eles estavam fazendo.

Além disso, você menciona "extrair parte do código que atualmente faz autenticação". Como é que você tem o código, mas não o algoritmo de hash?

0
Eric Petroelje