JavaScript Sandbox
-
24-10-2019 - |
Вопрос
Я хочу, чтобы разработчики написали несколько пользовательских приложений для сайта в JavaScript, но я хочу песочницу, чтобы они не могли сделать что -то непослушное, как перенаправить пользователя, установить дисплей тела ни на один и т. Д. И т. Д. У меня есть пространство имен в JavaScript, где все Функции, которые им когда -либо понадобятся, существуют там, поэтому я подумал создать песочницу, были бы вопросом:
with(Namespace) {
//App code goes here where they can only access Namespace.*
}
Как легко обойти это и какие еще методы можно сделать? Предпочел бы не модерировать каждое представленное приложение.
Решение
Чтобы обеспечить соблюдение песочницы, вам придется осмотреть код, прежде чем он будет выполнен, захватить какой-либо нелегитный код и, если он найдет, каким-то образом предотвратить его запуск. Очень утомительный и склонный к ошибкам в течение долгого времени.
Facebook сделал это, по крайней мере, на своей ранней платформе, я, как разработчик, определенно не наслаждался этим. Они ограничивали собственные методы, которые могут быть использованы, и предоставили ограниченные обертки вокруг некоторых.
Другие советы
Что ж, на данный момент параметры кода песочницы:
Оба позволяют вам создать безопасная окружающая среда где доступ к глобальному объекту и DOM ограничен.
Основная цель этих проектов - позволить вам безопасно встраивать виджеты и любой веб -контент от третьих лиц.
Первое, что приходит на ум, это eval
. Анкет Они могут использовать это для выполнения пользовательского кода за пределами песочницы обертки. Будет очень трудно остановить решительного разработчика, пытаясь завершить код.
Ссылка на сайт к использованию оценки.