Lua SQL Escape String(尝试)'}'附近的未完成字符串

时间:2015-03-01 15:50:58

标签: string lua escapestring

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 '"}'

1 个答案:

答案 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