【问题标题】:replicating wordpress password hash in mysql在mysql中复制wordpress密码哈希
【发布时间】:2013-02-27 06:30:08
【问题描述】:

所以我希望能够在 user_pass 列中更改我的 wordpress wp_user 表中存在的密码哈希。我希望能够写出如下内容:

# simplified version of what is desired.
UPDATE `wp_user` SET user_pass = MD5('123') WHERE user_email = 'some_dudes@someplace.com';

基本上,我希望能够在 mysql 中设置用户密码,这样当我使用查询设置密码后,当用户通过登录表单输入密码时,wordpress 将继续接受该密码为有效密码。我正在查看有关此的 PHPass 信息以及 wordpress 源代码中 class-phpass.php 的内容。根据我的研究,这似乎非常复杂,如果不是不可行的话。我是否遗漏了某些东西,或者这实际上是为了难以处理或可能被混淆?是否可以在 MySQL 中复制此功能?任何帮助,将不胜感激。非常感谢。

关于进度的编辑: 如果您只需要开发级别的安全性,那么您实际上可以使用以下内容:

UPDATE `wp_user` SET user_pass = MD5('123') WHERE id = 1342;

我应该更好地解释为什么会这样。出于遗留兼容性原因,Wordpress 将默认使用 MD5 哈希。基本上,当将密码传递给 wordpress 时,它会运行 wordpress PHPass 哈希,这将因MD5('123') 之类的原因而失败,然后 wordpress 将尝试其他更简单的哈希算法,例如 SHA1,最后是 MD5。然后,如果在其中一个上找到匹配项,wordpress 实际上会更新相关记录的密码列。它将给定的密码更新为 PHPass。发生这种情况后,您仍然可以继续前进。这基本上适用于开发环境,但是与 PHPass 的工作相匹配的 MySQL 查询是一项史诗般的任务。如果我破解它,那将是我的下一个更新。显然,wordpress 正在运行添加盐的河豚哈希大约 8000 次以生成最终的哈希结果。

【问题讨论】:

  • 好吧,Galt 先生,您似乎正在尝试开发一个 MySQL 查询,该查询将以编程方式将 WordPress 用户的密码更改为某个新值。那是对的吗?你说得对,这很难。但它肯定不会被混淆。它不像更新 wp_user 表中的列那么简单。更改密码时是否要取消用户激活的任何会话?
  • 如您所见,class-phpass.php 中发生了很多事情。其中大部分与可移植地做两件事有关:为哈希盐生成一个加密健壮的随机数,以及生成一个哈希。如果您尝试使用 RAND() 和 MD5() 等 MySQL 函数来复制它,那么您很可能会在您的 WordPress 安装中创建一个安全漏洞。那是因为 MySQL RAND 函数在密码学上不是健壮的。也就是说,MySQL 随机数比它们应该的更容易猜测。使用php函数,否则被破解!
  • @OllieJones 目前我并不太担心用户会话,此查询的预期功能是替换用户注册时创建的自动生成密码。这是为了在开发机器上进行测试。最终目标是允许创建任意用户的查询。不过密码很重要,我还不知道如何复制。
  • @OllieJones 别担心,我知道最好不要使用我希望构建的内容作为我的实时安装的一部分 :)

标签: mysql wordpress passwords sql-update phpass


【解决方案1】:

其实很简单,你甚至根据我看到的情况发布了一个正确的 sql。

<?php

$connection = mysql_connect('SERVER', 'USERNAME', 'PASSWORD');

mysql_select_db($database, $connection);

mysql_query('SQL_YOU_POSTED', $connection);

?>

【讨论】:

  • 其他人对您投反对票的原因可能是因为这个问题询问了“SQL_YOU_POSTED”在现实中需要什么。我在问题中写的是一个简单的例子,真正的查询要复杂得多。
  • 真正的查询 is 要复杂得多,这个答案断言 OP 帖子中的简单 SQL 是“正确的”,尽管 OP 表示它在感觉它不会生成实际的与 WordPress 兼容的密码哈希。事实上,从安全的角度来看,它是正确的,因为它只生成简单的、未加盐的哈希值并且极易受到攻击。
猜你喜欢
  • 2016-03-31
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
相关资源
最近更新 更多