В списке рассылки cap-talk
< / a> вокруг того, поддерживают ли Lua и Javascript модель объектных возможностей, с выводом, что из-за поддержки ограничения среды вызываемыми функциями через setfenv
и возможности неподдельных ссылок на неизменяемые объекты, OCM может быть реализован.
Мы видели, как это работает? Я заинтересован в удалении эксплойтов из существующего приложения с помощью очень полезной и обширной поддержки сценариев в Lua, которая, к сожалению, обеспечивает полный доступ к оболочке во всех случаях. Необходим некоторый доступ к оболочке: модель объектных возможностей кажется хорошим способом управления вещами. Но меня беспокоит, насколько убедительно я могу представить, что этот подход действительно будет надежно подтвержден в этой беспорядочной практике.
Некоторые ссылки:
- Более старый вопрос SO: Как я могу создать безопасную песочницу Lua?
- Справочная информация на erights.org: От объектов к возможностям
- Lua wiki: SandBoxes и ReadOnlyTables - показывает
setfenv
в действии; показывает основную идею таблиц, которые при определенных обстоятельствах могут быть доступны только для чтения
setfenv
будет устаревшим в пользу переменной_ENV
и функцииloadin
, начиная с версии 5.2 Lua: lua.org/work/doc/manual.html#2.2 - person Zecc   schedule 07.02.2011