如何解决更新MySQL用户密码的安全方法
据我所知,可以使用3种机制来更新MySQL(及其变体)中的用户密码。
-
ALTER USER 'user'@'host' IDENTIFIED BY 'pw';
-
SET PASSWORD FOR 'user' = PASSWORD('pw');
-
UPDATE mysql.user SET authentication_string = PASSWORD('pw') WHERE User = 'user' AND Host = 'host';
其中只有#3可以使用准备好的语句执行。
从MariaDB 10.4开始,mysql.user
表现在是一个视图-因此该机制将无法正常工作,而且无论如何都无法与mysql
数据库打交道。 >
#1和#2由于无法准备好而容易受到SQL注入攻击,因此存在问题:
是否有安全的方法来更新MySQL用户的密码?
解决方法
如果您使用的是PDO,请使用PDO::quote()
退出密码。
如果您使用的是MySQLi,请使用mysqli_real_escape_string()
。
您需要使用前两种方法在mariadb 10.4中更改密码。
因为他们现在具有不同的身份验证插件,并且将密码存储在 global_priv 中,而不是在 user 表中。
>建议仅通过本地主机进行操作,避免通过TCP并禁用历史记录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。