Подтвердить что ты не робот

Возможности для Lua: какой у вас опыт?

Было некоторое обсуждение в списке рассылки cap-talk вокруг того, поддерживает ли Lua и Javascript модель объектных возможностей, при этом вывод о том, что из-за поддержки ограничения среды для вызванных функций через setfenv и возможности непредсказуемых ссылок на неизменяемые объекты, OCM может быть реализован.

Мы видели, как это получается? Я заинтересован в удалении эксплойтов из существующего приложения с очень полезной и щедрой поддержкой скриптов в Lua, что, к сожалению, позволяет получить полный доступ к оболочке во всех случаях. Требуется некоторый доступ к оболочке: модель объектных возможностей кажется хорошим способом управления вещами. Но я беспокоюсь о том, насколько убедительным может быть случай, когда я смогу сделать так, чтобы этот подход действительно был надежно защищен в непредубежденной практике.

Некоторые ссылки:

4b9b3361

Ответ 1

Я не могу говорить с Lua, но для Javascript у Caja есть инструменты для создания надлежащей песочницы, ограничивающей доступ только к определенным функциям. Первоначально он был создан для создания песочницы для виджетов HTML/JS (например, тех, которые используются в iGoogle).

http://code.google.com/p/google-caja/

Здесь описание проекта со своей главной страницы:

Caja (произносится как "KA-ha" ), является Испанское слово, которое означает коробку, банк, кассовый аппарат, хранилище; контейнер для ценности. Веб-разработчик использует традиционные инструменты, такие как HTML, JavaScript и CSS; и Caja обеспечивает компилятор ( "cajoler" ), который принимает веб-приложение и "уговорил" веб-приложение HTML. cajoler пытается проверить безопасность свойства, делая статический анализ, и где он не может переписать ввод для добавления проверок времени выполнения.

Поскольку веб-приложения широко используются API-интерфейсов браузера, например. API DOM, которые дают огромный контроль через веб-страницу Caja обеспечивает приручение API, которые виртуализируют части DOM. Страница, содержащая страницу, может настроить внедрение среды приложения что встроенное приложение считает он взаимодействует с DOM полная, но на самом деле манипулирование ограниченной частью содержащую страницу через механизм, называемый виртуальные фреймы.

JavaScript, что приложение Caja использует запись в подмножестве отказа JavaScript (на самом деле EcmaScript5). Это подмножество, называемое "Валией", включает почти весь язык JavaScript, но удаляет несколько подверженных ошибкам конструкции, такие как и с ограничениями как можно использовать eval.