Estaba trabajando en una solución de cadena Lua localizable, cuando se me ocurrió este truco, el problema es que no sé cómo evitar ser pirateado :) Así que me preguntaba si alguien ha hecho algo similar y o sabe cómo protegerse de este tipo de ataque. (En el código de usuario)¿Hay alguna forma de evitar este problema de seguridad en Lua?
Dado que podemos hacer esto:
=("foo"):upper() -->output: FOO
Puede ser pirateado así:
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)
¿Alguna idea?
No es necesario utilizar el metatabla de cadena; es simplemente la cadena de tabla global. Entonces, usando string.upper = function ... los usuarios finales aún podrán cambiar la función. – jpjacobs