2017-04-12 53 views
0

我有我的wordpress中约900用户,我出口这些用户数据到我将使用Django的新平台。WordPress的用户密码数据作为纯文本/导出WordPress的用户密码到Django

我的问题是,我怎样才能将这些用户的密码导出为明文?如果我不能这样做,我想将它存储在新数据库的“old_password”字段中,但我想知道如何将文本与old_password“匹配”?因为我的计划是当用户登录时,我会尝试使用相同的电子邮件和哈希密码来查找用户,但我不知道使用了什么类型的哈希函数Wordpress以及Python Django中该函数的等效项。

+1

我真的很希望你没有权限访问你的用户的纯文本密码......并且发现wordpress的哈希算法不需要比简单的谷歌搜索更多的努力。 –

+1

可能的重复[WordPress使用什么类型的散列?](http://stackoverflow.com/questions/1045988/what-type-of-hash-does-wordpress-use) –

+0

如果你看看一些他们可能会告诉你使用了什么:算法$ rounds $ hash $ salt – jonrsharpe

回答

0

使用这个库,https://github.com/jmoswalt/wp-to-django-users

基本上你添加的Django的能力重新哈希旧WordPress的密码,让您的老WordPress用户现在可以在新的Django的网站使用他们的相同&旧密码

在你的Django项目的settings.py文件,添加以下内容:

PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher', 
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 
'django.contrib.auth.hashers.BCryptPasswordHasher', 
'django.contrib.auth.hashers.SHA1PasswordHasher', 
'django.contrib.auth.hashers.MD5PasswordHasher', 
'django.contrib.auth.hashers.CryptPasswordHasher', 
'hashers_passlib.phpass', 
) 

然后重新哈希密码,和你做。

from django.contrib.auth.hashers import get_hasher 
hasher = get_hasher('phpass') 
user.password = hasher.from_orig(user.password) 
1

现代密码控件明确设计用于确定性计算纯文本不可能。因此,确定它的唯一方法是通过“强力”攻击(尝试散列所有可能的密码直到找到正确散列的密码)或更复杂的技术(如使用rainbow tables),这会减少计算时间,但会使用大量存储。

this article中有一些关于WordPress密码安全的信息,它可能会对您有所帮助,并且this article包含PHP代码,您可以通过将其翻译成Python来重新调整用途。

听起来,虽然,最简单的方法就是在首次登录新网站时验证用户的现有密码为old_password,然后强制他们(通过重定向到特定页面)更改密码,一旦完成,清除old_password字段。

+1

问题是,“old_password”字段是空的,我希望填充它与wordpress散列密码。当用户在登录页面输入他们的数据时。我检查电子邮件,然后使用old_password散列密码(如果该用户的old_password字段不为空)。 –

+0

对不起,我没有意识到导出没有包含旧密码的散列。没有这些,除了在WordPress网站内创建一个页面,只有登录用户才能访问,并且链接到新网站的“重置密码”页面,似乎没有什么可做的。由于您必须包含某种形式的标识符,因此新站点才能确定尝试迁移的用户,因此应该通过包含一些可验证的散列来保护链接,以便新站点检查链接是否真实。 – holdenweb

+1

我会尽量找到一种方法,因为在wordpress中,您可以通过phpmyadmin更改密码,他们在PHPMyAdmin中使用MD5。 –