Sql 易受攻击的脚本需要修复

Sql vulnerable script needs fixing

提问人:Haseo 提问时间:1/16/2020 最后编辑:Egor SkriptunoffHaseo 更新时间:1/17/2020 访问量:131

问:

function SetLastCharacter(source, charid)
   MySQLAsyncExecute("UPDATE `user_lastcharacter` SET `charid` = '"..charid.."' WHERE `steamid` = '"..GetPlayerIdentifiers(source)[1].."'")
end

这是易受攻击的代码,我仍然需要能够使用该脚本,但是我需要修复此问题,任何帮助将不胜感激。

mysql sql lua sql 代码注入

评论

3赞 Eugene Ogongo 1/16/2020
请指定语言。解决方案是使用预准备语句。
0赞 Bill Karwin 1/17/2020
我知道用于字符串连接的唯一语言是 Lua。我已经添加了该标签。..

答:

0赞 Egor Skriptunoff 1/17/2020 #1

只需将文本中的每个引号和反斜杠加倍:

function SetLastCharacter(source, charid)
   charid = string.gsub(charid, "['\\]", "%0%0")
   local text = GetPlayerIdentifiers(source)[1]
   text = string.gsub(text, "['\\]", "%0%0")
   MySQLAsyncExecute("UPDATE `user_lastcharacter` SET `charid` = '"..charid.."' WHERE `steamid` = '"..text.."'")
end