网站搜索

如何在MySQL中检查密码强度


密码是广泛被大量应用和服务采用的最基本的认证形式。因此,确保用户使用的密码强大且安全是一个至关重要的特性。

因此,一个要求是在哈希和将密码存储在数据库之前测试密码的强度。这是因为MySQL以单向哈希的方式存储密码,即一旦密码被哈希,就无法逆转。

幸运的是,MySQL 为我们提供了一种插件,允许我们在对密码进行哈希之前检查密码强度。尽管该插件适用于小型和测试用例,但在大型应用程序中并不是非常适用。在将密码发送到数据库之前,最好在客户端进行密码检查。

加入我们,一起探索在MySQL中设置和配置简单密码强度检查的过程。

MySQL 验证密码插件

正如您所猜测的,validate_password 插件在 MySQL 中实现了密码强度检查。该插件支持 MySQL 版本 5.7。

在使用之前,确保插件已安装并激活是一个好措施。

启用 MySQL 验证插件

要启用 validate_password 插件,请编辑 MySQL 配置文件,并在 [mysqld] 部分下添加如下条目。

[mysqld]
plugin-load-add=validate_password.so

保存配置并重新加载服务器。

您还可以通过使用INSTALL命令在运行时包含插件。

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

注意:在Windows中,将validate_password.so文件替换为validate_password.dll。

启用验证密码组件

在 MySQL 8.0 及更高版本中,validate_plugin 已被弃用,需要使用 validate_password 组件代替。

运行命令:

INSTALL COMPONENT 'file://component_validate_password';

命令输出:

MySQL 密码强度评分

下表显示了 MySQL 中密码长度和分配的强度。

长度力量
< 4
>= 4 且 < 验证密码长度25
符合密码政策150
符合密码政策 275
符合密码政策 3100

注意:您可以通过以下语句查看 validate_password_length 变量的值:

show variables like 'validate_password_length';

输出:

|Variable_name           |Value|
|------------------------|-----|
|validate_password.length|8    |
|validate_password_length|8    |

MySQL 检查密码强度

在MySQL中检查密码字符串,请使用VALIDATE_PASSWORD_STRENGTH()函数。该函数以密码(字符串)作为参数,返回基于MySQL密码等级的强度。

语句的语法如下面所示:

SELECT VALIDATE_PASSWORD_STRENGTH(‘str’);

例如:

select validate_password_strength('insto');
select validate_password_strength('IvEYDrat');
select validate_password_strength('lvnDYPW%xP28E5%vt*AOROkg');

上面的语句使用 validate_password_strength 函数来检查三种密码类型的强度。

结果:

|validate_password_strength('insto')|
|-----------------------------------|
|25                                 |

第二:

|validate_password_strength('IvEYDrat')|
|--------------------------------------|
|50                                    |

第三:

|validate_password_strength('lvnDYPW%xP28E5%vt*AOROkg')|
|------------------------------------------------------|
|100                                                   |

终止

在本文中,您将学习如何使用MySQL validate_password插件来检查给定密码是否符合设置的密码强度。

感谢阅读!