如何在 WordPress 中测试 HashPassword?
Posted
技术标签:
【中文标题】如何在 WordPress 中测试 HashPassword?【英文标题】:How to test HashPassword in WordPress? 【发布时间】:2022-01-07 05:11:40 【问题描述】:我想测试(单元测试)来自 WordPress 的 HashPassword($password)
方法。
如何检查 HashPassword("123123") 是否会为其返回正确的哈希?
例如,我想做这样的事情:
$hashFor123123 = "$P$P)230230832482349823";
$result = HashPassword("123123");
$this->assertSame($hashFor123123, $result);
但是,HashPassword 方法每次都返回一个带有哈希的新字符串。这就是为什么我不能断言。
如何测试?
【问题讨论】:
【参考方案1】:密码散列使用随机的salt,因此每次散列相同的密码时,您会得到不同的值。理论解释here,即使WordPress不使用php密码哈希函数,而是他们自己的。您无法比较哈希值;您只能检查给定的未哈希密码是否与哈希匹配。
随机盐击败了网络爬虫使用rainbow lookup tables 来恢复给定哈希值的密码。即使网络蠕虫设法窃取您的 wp_users 表,这也有助于保护您的用户密码。 Defense in depth,它被调用了。
在 WordPress 中,您可以对密码进行哈希处理,然后使用 wp_hash_password() 和 wp_check_password(), 类似的方式检查它。
$hash = wp_hash_password( '123123' );
if ( wp_check_password( '123123', $hash ))
/* it worked */
else
/* it did not work */
不清楚为什么值得您花时间对这个子系统进行单元测试。它在全球范围内每天被用于生产数十亿次。
【讨论】:
【参考方案2】:每次调用HashPassword
结果都不一样的原因是因为你的密码是prefixed by a random salt在经过哈希处理之前。
要将明文密码与已知哈希值进行比较,您必须调用CheckPassword
。
【讨论】:
以上是关于如何在 WordPress 中测试 HashPassword?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我自己的插件上修复“此插件尚未使用 WordPress 的最新 3 个主要版本进行测试。它...”
如何通过 Javascript 在 wordpress 中检索当前用户?
我有一个 WordPress 网站并希望将其置于测试版或限制访问?