清理 sql 韵律 lua 模块中的输入

Sanitize sql input in prosody lua module

我想获取韵律以从我的 mysql 数据库中读取用户名和密码。 Prosody 提供了我想要编辑的 module,它可以从 sql 数据库中获取这些信息。

我的问题是:lua 代码如何防止 sql 注入?我在 lua 代码中找不到任何输入消毒剂。

它使用prepared statements。 sql包含参数的占位符,单独给出:

getsql("SELECT `password` FROM `authreg` WHERE `username`=? AND `realm`=?", username, module.host);

然后将语句和参数发送到数据库:

local stmt, err = connection:prepare(sql);
local ok, err = stmt:execute(...);

因为参数是单独发送的,所以 sql 注入的风险不同。只有 getsql 的第一个参数中的 sql 被视为 sql。其他参数仅作为数据处理。