虽然早就该这么做了, PostgreSQL 数据库服务器端近日终于在其最新代码中弃用了 MD5 密码特性支持。
MD5不再应该用于散列密码,因为非常容易受到攻击。多年来,MD5 不应该用于此类目的。但对于那些仍然依赖 MD5 进行密码散列的人士来说,PostgreSQL 开发人员已经启动了一项多年计划来结束这种做法。截至昨天(12月3日),在将成为 PostgreSQL 18 的 PostgreSQL Git 代码中,有许多关于弃用 MD5 密码支持的弃用通知。
如下Git 提交中的信息所述:
“一段时间以来,MD5 一直被认为不适合用作加密哈希算法。此外,PostgreSQL 中的 MD5 密码哈希容易受到传递哈希攻击,即,知道用户名和哈希密码就足以进行身份验证。v10 中添加的 SCRAM-SHA-256 方法不受这些问题的影响,并且被认为优于 MD5。
此提交将 PostgreSQL 中的 MD5 密码支持标记为已弃用,并将在未来版本中删除。文档现在包含几个弃用通知,并且 CREATE ROLE 和 ALTER ROLE 现在在设置 MD5 密码时发出弃用警告。可以通过将 md5_password_warnings 参数设置为“off”来禁用警告。”
https://github.com/postgres/postgres/commit/db6a4a985bc09d260d5c29848e3c97f080646a53
正如PostgreSQL 开发人员所讨论的那样,这很可能是 PostgreSQL 18 明确传达 MD5 密码支持已被弃用并将在将来被删除的程度。
随后,PostgreSQL 19 将支持使用 MD5 密码升级并允许使用它们进行身份验证,但禁止创建新密码。
之后,PostgreSQL 20 将禁止使用 MD5 密码进行身份验证。最后,在 PostgreSQL 21 中,它将禁止使用 MD5 密码升级,并且 PostgreSQL 中将不再支持 MD5 密码。
因此,如果出于某种原因需要,PostgreSQL 中的 MD5 密码支持仍将存在几年,但现在已正式弃用,并且正在着手删除。
作者:万能的大雄
相关阅读: