Я хочу, чтобы разработчики писали некоторые пользовательские приложения для сайта на Javascript, но я хочу сделать из него песочницу, чтобы они не могли делать что-то непослушное, например, перенаправить пользователя, настроить отображение тела на none и т. Д. У меня есть пространство имен в Javascript, где там есть функции, которые им когда-либо понадобятся, поэтому я подумал, что создать песочницу будет следующим:

with(Namespace) {
    //App code goes here where they can only access Namespace.*
}

Насколько легко обойти это и какие другие методы можно сделать? Скорее, не нужно модерировать каждое представленное приложение.

6
Louis 7 Июн 2010 в 07:25

3 ответа

Лучший ответ

Чтобы применить песочницу, вам нужно будет проверить код перед его выполнением, перехватить любой недопустимый код и, если он найден, каким-то образом предотвратить его запуск. Очень утомительно и подвержено ошибкам в течение длительного времени.

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

1
Lauri Lehtinen 7 Июн 2010 в 03:32

Первое, что приходит на ум, это eval. Они могут использовать это для выполнения пользовательского кода вне изолированной программной оболочки. Будет очень трудно остановить решительного разработчика, пытаясь обернуть код.

Ссылка на использование eval.

2
Community 23 Май 2017 в 10:33

Ну, варианты кода песочницы на данный момент:

Оба позволяют создать безопасную среду , где доступ к глобальному объекту и DOM ограничен.

Основная цель этих проектов - позволить вам безопасно встраивать виджеты и любой веб-контент от третьих лиц.

8
CMS 7 Июн 2010 в 04:21