所有分类
  • 所有分类
  • WordPress主题
  • WordPress插件
  • WordPress教程
  • PHP源码

WordPress 密码哈希算法已经从 phpass 改成了 bcrypt​

WordPress 在 6.8 版本的时候,将数据库中用户密码的哈希存储算法从 phpass 改为 bcrypt,采用 bcrypt 可大幅提高破解密码哈希的计算成本,从而增强 WordPress 的密码安全性。

此外,应用密码(application passwords)用户密码重置密钥个人数据请求密钥恢复模式密钥也将从 phpass 改为 BLAKE2b,这是一种通过 Sodium 实现的加密安全但速度较快的哈希算法。

目前仅剩文章密码(post passwords) 还在使用 phpass,未来可能在做进一步的如何优化文章密码的哈希和验证机制的研究之后再进行调整。

自动调整

这个调整是自动且静默的,就是说不会影响现有密码或密钥,站点管理员或用户也无需采取任何动作,升级到 6.8 后,用户无需去更改或重置用户密码,之前版本 WordPress 存储的密码和密钥会继续有效,已登录用户的会话仍会保持有效。

当用户首次登录,或在更改密码时,其密码会自动使用 bcrypt 重新哈希并保存到数据库,应用密码和安全密钥不会自动重新哈希,之前生成且在过期前使用则仍会保持有效。

phpass 生成的哈希可以在不同站点、环境和服务器之间移植,改用 bcrypt 和 BLAKE2b 后,这一特性仍然保持不变,因此迁移到其他服务器,或升级 PHP 和 WordPress,密码仍会正常运作。

对于普通用户来说。看到这里就差不多,你需要了解到的就是 WordPress 的用户密码哈希算法换成更安全的 bcrypt,然后应用密码和其他密钥则换成 BLAKE2b,然后无需做什么,WordPress 会自动调整。

下面是程序员了解的。😁

密码函数得到了更新

wp_hash_password() 和 wp_check_password() 函数已经更新成改用 PHP 原生的 password_hash() 和 password_verify() 函数,并使用 bcrypt 算法和 SHA-384 预哈希,wp_check_password() 函数依旧对 phpass 哈希的密码的支持,这样也就保持现有的密码不会失效。

此外,这两个函数仍继续支持通过 $wp_hasher 这个全局变量来实现替代原有的哈希机制。

WordPress 新增了一个新的 wp_password_needs_rehash() 函数,作为 PHP 原生函数的 password_needs_rehash() 的封装,如果想要调整其的逻辑,还可以使用 password_needs_rehash filter,并且该插件可替换的,如有需要可以自定义一个覆盖它。

SHA-384 预哈希的作用是为了避免 bcrypt 对密码长度(72 字节)的限制,密码哈希之后会加上  $wp 前缀,以区别于 bcrypt 默认生成的哈希,所以这样默认完整的前缀为 $wp$2y$

新增了两个快速哈希函数

以下两个函数通过 Sodium 实现了加密安全速度较快 BLAKE2b 算法:

wp_fast_hash():用于随机生成的高熵字符串进行哈希处理(建议至少 128 位,适用于无过期机制的密钥)。

wp_verify_fast_hash():用于 wp_fast_hash()生成的哈希值,并支持回退到 phpass 哈希

开发人员需要做什么?

使用 wp_hash_password() 和 wp_check_password() 函数的代码将继续工作,无需做任何修改,但是直接使用 phpass 哈希的代码那就要做一些修改了。

这也是我强调如果 WordPress 有对某个功能做了一层包装的函数,那就要该函数的原因,WordPress 底层替换之后,对应的处理也会进行处理,直接使用 WordPress 函数就无需做人修改了。

那么具体哪些情况需要修改呢?

  • 验证用户密码哈希的代码应改用:wp_check_password()
  • 验证应用程序密码、密码重置密钥、个人数据请求密钥或恢复模式密钥的代码应改用:wp_verify_fast_hash()
  • 如果使用了自定义 wp_hash_password() 或 wp_check_password() 函数的插件,除非这些函数实现了其他哈希算法,否则可移除以让 6.8 新增的 bcrypt 哈希算法实现生效。

其他认证机制(如 SSO、社交登录、一次性登录) 通常不受影响,但仍建议检查是否涉及密码哈希或密钥处理。多因素认证(MFA/2FA) 也不太可能受影响。

常见问题
无法安装这个包。 主题缺少style.css样式表?
遇到这个情况一般是没有解压直接上传主题包导致的,部分主题包下载后里面还有其他文件,解决方案就是解压后,只上传主题包文件。
显示未激活需要输入秘钥怎么办?
主要看高级付费功能是否可用,可用就不用管它;不可用的话,可以尝试任意字符串激活,也就是说有些资源显示“购买密钥”/“未激活”等信息是正常的(大部分资源激活只是获取在线更新功能)。如果你不想看到这些信息,你可以考虑通过“WP Nag Hide”之类的插件隐藏许可证激活提醒,此类插件是免费的。 本站所有资源都是GPL的,不懂GPL你可以简单理解破解版。当然“破解”的方式多种多样,有自带密钥激活的,有跳过激活的等等,本站统一默认破解版,即不能在线直接更新,无法获取官方支持,部分带密钥的资源是否可以在线更新可以自己测试,不作保证。 文件名带“n”或者“null”/“nulled”/“actived”是特别说明它是已破解已激活的(没带也是破解版,只是没有特别指明),如果一个资源最新版经测试没有破解,可以尝试先安装旧的已破解版本,在升级到新版本。
插件安装了用不了?
排查以下原因:1.安装了缓存插件的网站尝试清楚缓存,重新安装或激活操作;2.看是否需要先安装基础版?比如elementor pro就得先安装免费版elementor;3.看基础版插件是否要求也从本网站下载,比如elementor的基础版就需要用本网站提供的安装包,这种情况会在网页特别注明;4.输入任意字符串尝试激活。
主题无法导入Demo模板?
这里分几种情况: ①你使用的是虚拟机,检查主题所需环境是否都满足,然后检查是否有插件不兼容情况,停用所有虚拟机自带插件重试; ②导入过程卡住不动,可以刷新重试,这是正常的,一般多试几次就可以了,或者设置好PHP配置; ③有个demo导入器,经常会导入完成后报些错误,一般你重新导入一次就可以了; ④如果导入demo模板,前台显示不全,或者部分乱码,一般是因为你没有安装好该有的插件造成的;如果首页还是wordpress默认页面,那就去“设置-阅读”下面修改首页为静态也并选中“home”页。 ⑤所有插件都安装好以及服务器配置都设置好,但无法导入模板,提示需要激活,那么说明为破解成功,可以尝试任意字符串激活,或者找其他文件名带“n”/“null”/“nulled”等字样的历史版本,先导入demo模板然后再升级,有些升级后无法使用,那只能先用着旧的版本; ⑥本站亲测可用的资源,如果你不能使用,多半是你操作或者哪里设置问题,请自行排查,学习官网使用文档,如未能解决,评论区反馈,24小时解决! 注意:有些较大的主题,会附带有插件,导入demo之前会提示必须安装哪些插件才行,这是资源包内有附带的插件就从资源包手动上传安装(有些虽然附带了但是也可以后台安装更新,尤其是自带密钥激活的资源,这些自行测试),没有的就说明可以后台直接安装! 注意:如果本站亲测可以导入demo模板,但是你就是不行,那么考虑是服务器的问题,极少部分主题国内服务器无法导入demo,换成海外服务器就可以,比如Soledad主题。
我可以在多少个网站上使用插件或主题?
不受限制。您可以随心所欲使用,欢迎分享给您的朋友。
0
分享海报

评论0

请先
MinimogWP主题v3.6.4一款高转化率的wordpress企业主题
MinimogWP主题v3.6.4一款高转化率的wordpress企业主题
9分钟前 有人购买 去瞅瞅看
没有账号?注册  忘记密码?

社交账号快速登录

无法注册或登录请联系客服QQ 2510585358