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

时间:2015-01-28 17:28:38

标签: mysql sql lua

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

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

1 个答案:

答案 0 :(得分:1)

它使用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。其他参数仅作为数据处理。