Javascript Песочница - PullRequest
       9

Javascript Песочница

6 голосов
/ 07 июня 2010

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

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

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

Ответы [ 3 ]

8 голосов
/ 07 июня 2010

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

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

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

2 голосов
/ 07 июня 2010

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

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

1 голос
/ 07 июня 2010

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

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

...