function escape_sqli(source)
to_replace = {"'", '"'}
replace_with = {"\'", '\"'}
output = source
for i = 1, table.getn(to_replace) do
output = string.gsub(output, to_replace[i], replace_with[i])
end
return output
end
我尝试使用上面的代码来逃避SQL,但是当我尝试编译它时出现以下错误:
Unfinished String near '"}'
答案 0 :(得分:4)
目前,the code中没有语法错误。
虽然有建议;来自string.gsub
文档:
string.gsub(s,pattern,repl [,n])
[...]
如果
repl
是一个表,则使用表格查询每个匹配项 第一次捕获作为关键。
您可以按如下方式重新创建替换表:
local replacements = { ['"'] = '\\"', ["'"] = "\\'" }
并在一次gsub
电话中使用它:
function escape_sqli(source)
local replacements = { ['"'] = '\\"', ["'"] = "\\'" }
return source:gsub( "['\"]", replacements ) -- or string.gsub( source, "['\"]", replacements )
end