例如,我想转义lua中的单引号:
到目前为止,我的脚本使用sqlite获取mysql表的一些数据:
local sqlCmd = string.format([[INSERT INTO temp_storage
SET gID = '%s'
]], gID)问题是,gID也可以包含单引号',但是sql语句则包含错误。
如何防止这种情况发生?我并不是真的在寻找一种搜索和替换的方法-更多的是一个内置函数来替换,这样sql仍然是有效的。
发布于 2016-03-01 00:43:28
我们缺少一些关于如何在sqlite3 db上执行查询的信息,您使用的是哪个库?
其次,将在db上执行的“字符串”连接起来是不安全的,这会导致注入。这样做的安全方法是绑定参数,即“通知”db将输入作为param (仅为)处理,这与以前的方法相反。
从我为此目的所知道的库中,LuaSQLite3将完成这项工作(在代码中表示为"lsqlite3“)。
您使用的基本api是:
local sqlite3 = require("lsqlite3")
local db = sqlite3.open_memory()
gID = 6
local insert_stmt = assert( db:prepare("INSERT INTO temp_storage SET gID = ?") )
insert_stmt:bind_values(gID)
insert_stmt:step()
insert_stmt:reset()我修改了其中一个官方示例("statement.lua")。
https://stackoverflow.com/questions/35704704
复制相似问题