【发布时间】:2020-09-10 10:51:35
【问题描述】:
据我所知,可以使用 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 用户密码的安全方法?
【问题讨论】:
-
您为什么希望在 Web 界面中更新 MySQL 用户密码?
-
我在一家网络托管公司工作
-
仍然不确定为什么要在 Web 界面上以需要使用参数化查询的交互方式执行此操作。密码由租户管理软件生成,无需用户输入。
-
这些 cmets 与手头的问题无关
-
我不同意。问题的根本原因是您似乎试图将功能转移到交互式 Web 应用程序中,而实际上您不应该这样做。如果密码是由应用程序生成的,而不是通过用户输入生成的,那么您一开始就不会有这个问题!
标签: mysql sql security change-password