Было некоторое обсуждение в списке рассылки cap-talk
вокруг того, поддерживает ли Lua и Javascript модель объектных возможностей, при этом вывод о том, что из-за поддержки ограничения среды для вызванных функций через setfenv
и возможности непредсказуемых ссылок на неизменяемые объекты, OCM может быть реализован.
Мы видели, как это получается? Я заинтересован в удалении эксплойтов из существующего приложения с очень полезной и щедрой поддержкой скриптов в Lua, что, к сожалению, позволяет получить полный доступ к оболочке во всех случаях. Требуется некоторый доступ к оболочке: модель объектных возможностей кажется хорошим способом управления вещами. Но я беспокоюсь о том, насколько убедительным может быть случай, когда я смогу сделать так, чтобы этот подход действительно был надежно защищен в непредубежденной практике.
Некоторые ссылки:
- Более старый вопрос SO: Как создать безопасную песочницу Lua?
- Фон на erights.org: От объектов к возможностям
- Lua wiki: SandBoxes и ReadOnlyTables - показывает
setfenv
в действии; показывает основную идею за таблицами, которые при подходящих обстоятельствах могут быть сделаны только для чтения