Я хочу заблокировать библиотеку io, чтобы сценарии, созданные сообществом, не имели к ней доступа.
Я мог бы просто создать состояние Lua без него, но вот дилемма: сценарии сообщества по-прежнему должны быть в состояниииспользовать библиотеку io, вызывая loadfile () для библиотек, созданных командой разработчиков, которые обернули в них функции io.
Я не нашел способа добиться этой двойственности, блокируя функции / библиотеки из сценариев сообщества, в то же время позволяяуказанные сценарии для запуска нарушающих функций / библиотек, если они помещены (для целей очистки) в другую поддерживаемую dev-библиотеку, которую сценарии сообщества можно загрузить с помощью loadfile ().Я прибегаю к уродливому методу внесения в черный список определенных строк, поэтому, если они есть в скрипте, он не запускается.Кстати, черный список проверяется со стороны C ++, где сценарий для запуска является строковой переменной, которая подается на виртуальную машину, если она чистая.
Если я черный список ...
"_G", "io.", "io .", "io}", "io }", "io ", "=io", "= io", "{io", "{ io", ",io", ", io", " io"
... можно ли по-прежнему вызывать библиотечные функции io, или у меня есть все?Причина, по которой блокировка _G является обязательной, заключается в следующем:
a = "i"
b = "o"
boom = _G[a..b]
Я хочу знать, возможен ли другой «взлом».Кроме того, я приветствую альтернативы того, как я могу достичь вышеупомянутой двойственности без черных списков.