建议收藏|MySQL数据库DBA 防坑指南
-- 创建一个新的用户并授予权限,避免SQL注入风险的例子
DELIMITER $$
CREATE PROCEDURE `db_creds`.`CreateUserWithSecurePassword`(
OUT success BOOLEAN,
IN userName VARCHAR(16),
IN userPassword TEXT
)
BEGIN
-- 使用预处理语句来避免SQL注入
PREPARE stmt FROM 'CREATE USER ? IDENTIFIED BY ?';
EXECUTE stmt USING userName, userPassword;
DEALLOCATE PREPARE stmt;
GRANT SELECT, INSERT, UPDATE, DELETE ON `db_creds`.* TO userName;
COMMIT;
SET success = TRUE;
END$$
DELIMITER ;
这个存储过程CreateUserWithSecurePassword
接受用户名和密码作为输入参数,使用预处理语句创建新用户,并通过安全授权用户权限。这里使用了参数化的预处理语句,避免了直接将用户输入拼接到SQL语句中,从而减少了SQL注入的风险。
评论已关闭