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

问题描述 投票:-1回答:2
function SetLastCharacter(source, charid)
   MySQLAsyncExecute("UPDATE `user_lastcharacter` SET `charid` = '"..charid.."' WHERE `steamid` = '"..GetPlayerIdentifiers(source)[1].."'")
end

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

mysql sql lua sql-injection code-injection
2个回答
0
投票

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

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

-2
投票

您需要参数化和清理输入。

© www.soinside.com 2019 - 2024. All rights reserved.