Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Песочница в браузере (https://javascript.ru/forum/project/41456-pesochnica-v-brauzere.html)

Gvozd 15.09.2013 00:37

Песочница в браузере
 
Пытаюсь создать в браузере песочницу
Чтобы в пределах этой песочницы можно было выполнить сторонний(недоверенный) скрипт, выдать ему минимально необходимые для работы объекты/методы, и при этом он не смог никак бы влиять на работу основного скрипта, и своих соседей, либо сделать что-то на что ему основной скрипт не дал явного права.

В частности, скрипт в песочнице не должен ни при каких условиях получить доступ к глобальному объекту window, либо к иному объекту, окромя специально переданных.

Пока получилась такая версия: http://jsfiddle.net/EyZD6/7/
Скрипт для песочницы - в script#sandbox

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

PS Из-за вмешательства в Function.prototype для механизма песочницы нужно выделить отдельный фрейм, в котором можно запускать неограниченное число недоверенных скриптов.

kobezzza 15.09.2013 11:49

А почему нельзя поместить чужой код в отдельный поток? А для операций с документом можно использовать сообщения с главным потоком, где и проверять права.

Gvozd 15.09.2013 12:17

И то верно, так гораздо проще.

Но тогда с этим потоком придется общаться исключительно сообщениями.
Интересен все-таки вариант, когда из этого кода можно получить объект модуля, или другие, и использовать их.
Что-то вроде модулей vm/contextify для NodeJS

Gvozd 17.10.2013 00:54

UP!
Хотелось бы еще мнений, по поводу скрипта, его доработки и обхода


Часовой пояс GMT +3, время: 01:52.