Ich arbeitete gerade an einer lokalisierbaren Lua-String-Lösung, als ich mit diesem Hack kam, Problem ist, ich weiß nicht, wie man davon gehackt wird zu vermeiden :) Also ich frage mich, ob jemand, etwas ähnliches getan hat und oder weiß, wie man vor dieser Art von Angriff schützt. (In Benutzercode)Gibt es in Lua trotzdem ein Sicherheitsproblem?
Da wir dies tun können:
=("foo"):upper() -->output: FOO
Es kann wie folgt gehackt werden:
getmetatable("foo").__index.upper = function() print("bye bye sucker");os.exit() end
=("foo"):upper() -->output: bye bye sucker (application quits)
-- or this way
=string.upper("bar") -->output: bye bye sucker (application quits)
Irgendwelche Ideen?
Keine Notwendigkeit, die Zeichenfolge metatable zu verwenden; es ist einfach die globale Tabellenfolge. Durch die Verwendung von string.upper = function ... können die Endbenutzer die Funktion weiterhin ändern. – jpjacobs