【问题标题】:How does woo commerce encrypt passwords?woocommerce 如何加密密码?
【发布时间】:2016-05-04 21:55:15
【问题描述】:

我有一个安装了 woo commerce 的网站。我目前将其用作在线商店。不过,我想制作网站的应用版本,以便人们可以在应用和网站上注册、登录和购买东西。

所以我想我必须以与 woo commerce 加密相同的方式加密用户密码,以便从应用程序发送的密码与通过 woo commerce 发送的密码具有相同的哈希值。

问题是我不知道 woo commerce 如何加密他们的密码,我尝试搜索但没有得到任何信息。

虽然我有一种预感,WordPress 和 Woo commerce 会以相同的方式加密密码,直到我创建了两个使用相同密码的帐户,一个通过 WordPress 和一个通过 woo commerce 并且它们的哈希值在我的数据库中出现不同。

如果有人能帮我弄清楚如何在不取消我已经拥有的 woo Commerce 登录系统的情况下拥有两个相同的密码哈希器,我将不胜感激。

或者:如果有人能告诉我 woo commerce 用来加密他们的密码的 php 文件在哪里,那也太棒了!

提前致谢。

【问题讨论】:

  • 你为什么需要别人来让你访问你自己的文件?
  • 因为我不知道它在那里 :D
  • 我看到我现在更改的文本中出现了错误
  • 由于加盐,WordPress 不会两次为相同的密码提供相同的哈希值。见wordpress.org/support/topic/…
  • 您是否检查过发送的密码是加密,而不仅仅是输入的普通密码? (使用 Charles Proxy 查看实际发送的内容。通常密码在 HTTPS 下以纯文本形式发送以确保安全,并在保存在后端时进行哈希处理。

标签: php wordpress woocommerce passwords phpass


【解决方案1】:

这显然太长了,无法发表评论...

如果您在更改某人的密码后查看 wp_users 表,他们的 user_pass 字段将类似于 $P$BCaLL1.Kcf3mWvwhEvQedwyX.etREw.$P$ 是一个标志,表明PHPass 生成了密码。接下来的 8 个字符 BCaLL1.K 是每个用户唯一的随机盐。其余字符是对密码多次运行散列函数 (bcrypt) 的结果,每次将要再次运行散列时将盐附加到值。

您可能认为将盐以明文形式存在存在安全风险,但每条记录具有唯一的盐使得使用彩虹表破解密码变得更加困难,并且多次运行哈希算法并每次都对其进行加盐使得它破解的计算成本很高。

要回答您最初的问题,请从 wp_hash_password() 函数开始。您可以看到它如何与 PHPass 交互以生成哈希。

【讨论】:

  • 谢谢戴夫!我想我明白了。
【解决方案2】:

事实证明,woo commerce 和 WordPress 确实使用相同的密码哈希(在本例中为 phpass)。

但是,密码散列器不会以相同的方式对相同的密码进行两次散列。因此,检查明文密码是否与加密密码相同的唯一方法是运行特殊功能。

在这种情况下,phpass 的特殊功能是 'checkpassword':

$correct = 'original password here';
$hash = 'some hashed password (eg. $P$BzunkYjtVU1F6Derj3.2sNslS.4jL6/)';
$check = $t_hasher->CheckPassword($correct, $hash);

if ($check){
  echo "The passwords are the same";
}else
  echo "The passwords are not the same";

在示例中,它根据哈希检查纯文本密码以查看它们是否相同。有关它的更多信息可以在 phpass 下载文件夹中的“test.php”文件中找到。

就我而言,我只需要下载 phpass 并实现“检查密码”功能。

【讨论】:

    猜你喜欢
    • 2011-06-30
    • 2013-04-15
    • 2011-07-14
    • 2013-06-28
    • 2012-02-03
    • 2015-03-13
    • 2014-05-16
    • 2013-09-10
    • 2019-07-11
    相关资源
    最近更新 更多