Я не могу говорить с Lua, но для Javascript у Caja есть инструменты для создания правильной песочницы, ограничивающей доступ только определенным функциям. Первоначально он был создан для создания изолированной программной среды для виджетов HTML / JS (например, используемых в iGoogle).
Каха (произносится "Ка-ха"), является
Испанское слово, которое означает коробку, банк,
кассовый аппарат, хранилище; контейнер для
ценные вещи. Веб-разработчик использует
традиционные инструменты, такие как HTML,
JavaScript и CSS; и Каха обеспечивает
компилятор ("cajoler"), который принимает
веб-приложение и производит
веб-приложение HTML "cajoled".
cajoler пытается проверить безопасность
свойства путем проведения статического анализа,
и где он не может переписать
ввод для добавления проверок во время выполнения.
Поскольку веб-приложения широко используются
API браузеров, например API DOM,
которые дают огромное количество контроля
через веб-страницу, Caja обеспечивает прирученный
API, которые виртуализируют части
DOM. Содержащая страница может настроить
встраивать среду приложения так
что думает встроенное приложение
он взаимодействует с DOM
полная страница, но на самом деле только
манипулируя ограниченной частью
содержащий страницу через механизм под названием
виртуальные фреймы.
JavaScript, что приложение Caja
использует записано в подмножестве аварийного останова
JavaScript (на самом деле EcmaScript5).
Это подмножество, называемое "Valija", включает в себя
почти весь язык JavaScript,
но удаляет несколько подверженных ошибкам
конструкции, такие как с и ограничивает
как можно использовать eval.