it-swarm.cn

使用散列密码将用户帐户迁移出系统

我有一个系统,有几千个用户帐户,我需要迁移到一个新的平台。系统存储散列密码,未加密或(谢天谢地)纯文本。另外,我没有随时可用的哈希细节。

有哪些有效的过渡方式?我想到了一个想法:

  1. 提前,我可以迁移所有数据。旧平台中的当前用户将在新平台中拥有帐户及其所有数据。
  2. 剔除当前处理身份验证的一些代码,并将其转换为一种检查用户名/密码有效性的服务。
  3. 新平台可以首先检查自己的身份验证,以查看密码是否已被传输。如果没有,它可以调用另一个平台上的服务来确定它是否在旧系统中有效。
  4. 如果它无效,那么它告诉用户他们的登录是错误的。
  5. 如果它有效,它现在知道正确的密码并且可以用密码填充它自己的用户表(根据平台使用的任何方案)。
3
Larsenal

我最近经历了一个类似的问题,除了我没有访问正在使用的哈希算法。我认为你有两个选择。

  1. 将所有用户配置文件移动到新系统,并使用旧密码哈希添加一个额外列。
  2. 当用户第一次登录时,系统将看不到新系统中存在任何帐户,但旧系统中存在哈希。您的系统将保留密码的预哈希副本,并针对旧哈希检查哈希版本。
  3. 如果旧的哈希匹配,则将新系统中的密码设置为它们发送的内容。

但是,如果您发现无法访问哈希算法,并且您拥有每个用户的电子邮件地址,则可以选择其他方式。这就是我实际做的事情:

  1. 复制从旧系统到新系统的所有用户名,电子邮件地址和信息。在表中放置一个标志列,表示用户来自旧系统。
  2. 当用户第一次登录新系统时,新系统将看到他们有一个帐户但没有密码。
  3. 让您的系统在屏幕上显示“我们已更新我们的网站并且您的用户帐户已被转换”的消息。您将很快收到一封带有新临时密码的电子邮件(确保密码或特殊链接仅适用于短时间内)一段的时间)。
  4. 向用户发送临时密码,以便他们登录。一旦他们第一次登录,他们就会将密码重置为他们喜欢的密码。

第二种选择对我来说非常好。我几乎没有用户投诉,而且相对安全,因为这是用户重置忘记密码的正常过程。

3
Ben Hoffman

在你遇到太多麻烦之前,你看看哈希算法可能是什么?如果他们足够理智使用散列密码,希望他们足够理智使用通用散列算法(MD5,SHA1等)。

可能值得尝试一些常见的选项,看看你是否可以对他们正在做的事情进行逆向工程。

此外,您提到“删除当前进行身份验证的一些代码”。你是如何拥有代码的,而不是哈希算法?

0
Eric Petroelje