Почему песочница ненадежный интерпретируемый код трудно - PullRequest
1 голос
/ 25 января 2012

Это теоретический вопрос эмпирического наблюдения, который не имеет прямого отношения к коду, но я думаю, что он имеет практическое значение.

Сбой и устаревание rexec в Python, обручи проскакивают через песочницу своего Javascript (например, с Google Caja), код песочницы кажется довольно сложной задачей.

Почему это так? Мне кажется, что любой интерпретируемый язык находится в «песочнице» по умолчанию: он может только изменять внутреннее состояние интерпретатора (создавая переменные, вызывая методы и т. Д.) И ничего не делать вне интерпретатора. Для того чтобы любой интерпретируемый код имел какой-либо эффект вне интерпретатора (например, для печати), интерпретатору необходимо выявить хуки, которые интерпретируемый код может использовать, чтобы заставить интерпретатор делать что-то во «внешнем» мире.

Если это так, то ненадежный код в песочнице должен быть таким же простым, как ограничение того, какие хуки вы ему выставляете, что не должно быть сложно, если моя логика выше и хуки должны были быть специально добавлены после факта сверху полного рабочего языка.

Очевидно, что это не так, потому что rexec является мертвым, а Google Caja действительно существует . Что-то в моем приведенном выше описании должно быть ошибочным или неточным. Что это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...