#javascript #ecmascript-6 #server-side-rendering #sandbox #serverside-javascript
#javascript #ecmascript-6 #рендеринг на стороне сервера #изолированная среда #серверная часть -javascript
Вопрос:
В настоящее время у меня есть песочница, которая работает на стороне клиента с использованием with
proxy
техники , но я хочу перенести все шаблоны на рендеринг на стороне сервера, чтобы уменьшить нагрузку на клиентские компьютеры, чтобы иметь возможность сделать мой CSP более строгим.
Однако я не могу просто перенести свой «изолированный генератор кода» на сервер и закрыть его, поскольку весь мой серверный код находится в строгом режиме, следовательно, нет with
, следовательно, нет песочницы.
Есть ли у меня какой-нибудь способ убедиться, что код в шаблонах выполняет только то, что он должен делать? Без написания пользовательского синтаксического анализатора, абсолютно не собираюсь этого делать.
Комментарии:
1.
Function("with({key: 'value'}) console.log(key);")()
это способ, потомуFunction
что исключает директиву use strict по спецификациям.2. Я не могу использовать это, так как хочу явно удалить eval из клиента (а конструктор функций — eval)
3.1.
Function
нетeval
… они делают разные вещи. 2.Function
это то, что вы можете выполнить на сервере, поскольку вы спросили, как выполнить код на сервере.4. кроме того, вы можете создать виртуальную машину nodejs.org/api/vm.html
5. хорошо, правильно, это не eval, но он делает почти то же самое, и если я включу
unsafe-eval
в свою функцию CSP, она также больше не будет работать, поскольку runtime-js-parsing отключен. Вот что я имел в виду. и я также не могу запустить функцию на сервере, я хочу извлечь js из шаблонов, сохранить их как вызываемый фрагмент кода в файле, этот сгенерированный файл будет включен в мой клиент. Это рендеринг на стороне сервера, приложение запускается на стороне клиента. Я хочу создавать шаблоны, но не хочу авалировать.