内容导航
引言
作为全球最广泛使用的开源内容管理系统,WordPress 的安全性直接关系到数百万网站的数据完整性与用户隐私。密码哈希机制是保障用户凭据安全的核心手段——通过将明文密码转换为不可逆的密文,即便数据库遭泄露,攻击者也难以还原用户的真实密码。
在即将发布的 WordPress 6.8 版本中,一个重大的安全更新是将默认的密码哈希算法从传统的 phpass 升级为更现代且安全的 bcrypt。这一变更标志着 WordPress 在平台安全性方面迈出关键一步,进一步向行业最佳实践靠拢。事实上,早在 13 年前,社区中就有声音呼吁引入 bcrypt,而如今,这一提案终于成为现实。
WordPress 6.8 之前的密码哈希机制:phpass
在 6.8 版本之前,WordPress 使用的是名为 phpass(Portable PHP password hashing framework) 的密码哈希机制。phpass 的设计初衷是为缺乏原生加密扩展的旧版 PHP 提供跨平台的安全哈希方案。它通过引入“可移植哈希”的概念,增强了跨不同 PHP 环境的兼容性。
phpass 通常使用迭代哈希配合盐值(salt)来增强密码安全性,相比早期未加盐的 MD5 等算法已经有显著提升,但面对当今计算能力日益强大的破解手段,其防护能力仍显不足。
为何采用 bcrypt?
WordPress 选择 bcrypt 的核心原因在于大幅提升密码哈希的抗攻击能力。bcrypt 具备以下优势:
- 高计算成本设计:bcrypt 本身设计为“慢速”算法,显著增加了暴力破解的难度;
- 对现代硬件破解手段的抵抗力强,尤其是 GPU 和 ASIC;
- 自动加盐机制,防止彩虹表攻击;
- 适应性强,通过可调节的“工作因子”可与计算能力同步增强安全性。
不仅如此,此次更新还扩大了加密安全的适用范围,涵盖了包括用户密码、应用密码、密码重置密钥及其他敏感凭据在内的多个关键字段。这些值将采用更先进的 BLAKE2b 哈希(通过 Sodium 库实现),体现了 WordPress 在整体安全战略上的系统性升级。
bcrypt 的核心特性与安全优势
bcrypt 是专为密码哈希设计的算法,基于 Blowfish 分组密码构建,具备以下关键特性:
- 自动加盐(Automatic Salting):每个密码哈希自动附加一个随机盐值,有效避免彩虹表攻击;
- 可调节工作因子(Configurable Work Factor):bcrypt 引入“成本因子”或“轮数”,工作因子越高,破解所需计算量呈指数增长;
- 抗暴力破解能力强(Resistance to Brute-Force Attacks):结合自动加盐和高计算成本,大大提升攻击者破解难度;
- 单向不可逆(One-Way Function):无法从哈希还原原始密码,保障数据隐私;
- 业界广泛采用(Widely Adopted Industry Standard):被众多系统广泛使用,深受安全专家推崇。
虽然 bcrypt 的“慢速特性”可能会轻微影响登录速度,但为了更强的安全性,这种性能与安全的权衡是值得的。
WordPress 6.8 中 bcrypt 的实现细节
WordPress 对 bcrypt 的集成是深思熟虑、兼顾安全与兼容性的。其实现包括:
- SHA-384 预哈希:由于 bcrypt 最多只接受 72 字节密码,WordPress 6.8 在哈希前先对密码进行 SHA-384 处理;
- 专属哈希前缀
$wp$
:WordPress 使用$wp$2y$
前缀来标识其生成的 bcrypt 哈希,避免与其他插件混淆; - 向后兼容:旧密码哈希仍可通过
wp_check_password()
验证,无需用户手动重置密码; - 可选 Argon2 支持:如果服务器环境支持,开发者也可以选择更先进的 Argon2 算法(前缀为
$argon2
); - 继续支持
$wp_hasher
全局对象:方便开发者扩展或自定义哈希机制。
bcrypt 与 phpass 对比
特性 | bcrypt | phpass |
---|---|---|
默认版本 | WordPress 6.8 起 | WordPress 6.8 前 |
加盐机制 | 自动、强制 | 通常使用,但非强制 |
工作因子 | 可调,计算成本指数增长 | 可配置迭代,但增长幅度较低 |
抗暴力破解 | 强,专为密码设计 | 较弱,抗现代攻击能力有限 |
抗 GPU 破解 | 较强 | 容易受 GPU 加速影响 |
行业支持度 | 广泛采用,被视为标准 | 曾广泛使用,逐渐被替代 |
算法基础 | Blowfish 分组密码 | 多种可移植哈希框架 |
综上所述,bcrypt 在安全性、抗攻击性以及长期维护性方面全面领先于 phpass,是现代密码哈希的更优选择。
对用户与开发者的影响
- 对用户而言:升级到 WordPress 6.8 后无需任何操作,系统将在用户首次登录或更改密码时自动重新哈希为 bcrypt。
- 对开发者而言:
- 核心函数
wp_hash_password()
与wp_check_password()
已切换为使用 PHP 原生的password_hash()
与password_verify()
; - 若代码中使用了非 WordPress API 的 phpass 验证方法,需适配新算法;
- 注意新密码哈希前缀
$wp$2y$
,以及其他安全密钥的$generic$
前缀。
- 核心函数
此外,SSO、多因素认证(MFA)等其他身份认证机制不会受到影响。
结语
WordPress 6.8 默认采用 bcrypt 算法,是平台安全性提升的重要里程碑。这项更新不仅增强了用户密码的防护能力,也反映了 WordPress 积极拥抱更安全、更现代技术的态度。通过自动迁移、向后兼容、开发者友好等一系列策略,WordPress 保障了此次升级的平滑实施,也为广大用户带来了更值得信赖的安全保障。