Это теоретический вопрос эмпирического наблюдения, который не имеет прямого отношения к коду, но я думаю, что он имеет практическое значение.
Сбой и устаревание rexec
в Python, обручи проскакивают через песочницу своего Javascript (например, с Google Caja), код песочницы кажется довольно сложной задачей.
Почему это так? Мне кажется, что любой интерпретируемый язык находится в «песочнице» по умолчанию: он может только изменять внутреннее состояние интерпретатора (создавая переменные, вызывая методы и т. Д.) И ничего не делать вне интерпретатора. Для того чтобы любой интерпретируемый код имел какой-либо эффект вне интерпретатора (например, для печати), интерпретатору необходимо выявить хуки, которые интерпретируемый код может использовать, чтобы заставить интерпретатор делать что-то во «внешнем» мире.
Если это так, то ненадежный код в песочнице должен быть таким же простым, как ограничение того, какие хуки вы ему выставляете, что не должно быть сложно, если моя логика выше и хуки должны были быть специально добавлены после факта сверху полного рабочего языка.
Очевидно, что это не так, потому что rexec является мертвым, а Google Caja действительно существует . Что-то в моем приведенном выше описании должно быть ошибочным или неточным. Что это?