Я хотел бы предоставить пользователям возможность отправлять произвольный код JavaScript, который затем отправляется на сервер Node.JS и безопасно выполняется до того, как вывод будет отправлен обратно нескольким клиентам (как JSON). Функция eval
приходит на ум, но я знаю, что это связано с несколькими проблемами безопасности (пользовательский код может получить доступ к API файлов Node и т. Д.). Я видел некоторые проекты, такие как Microsoft Web Sandbox и Google Caja, которые позволяют выполнять дезинфицированную разметку и скрипт (для встраивания сторонних объявлений на веб-сайты), но похоже, что это инструменты на стороне клиента, и я не уверен, что они могут безопасно использовать в узле.Безопасная песочница и выполнить пользовательский JavaScript?
Есть стандартный способ для песочницы и запускать ненадежный JavaScript в узле, получая вывод. Ошибочно ли пытаться сделать это на стороне сервера?
EDIT: Не важно, чтобы пользователь мог использовать все возможности JavaScript, на самом деле было бы предпочтительнее выбирать и выбирать, какие API-интерфейсы будут предоставляться коду пользователя.
EDIT: Я собираюсь продолжить и обновить то, что нашел. Этот модуль Sandcastle (bcoe/sandcastle
), похоже, нацелен на то, что я имею в виду. Не уверен, насколько это безопасно, но поскольку я не для чего-то слишком важного, я думаю, что попробую. Я добавлю свой собственный ответ, если я смогу успешно это сделать.
Почему он должен выполняться на вашем сервере, а не на клиенте? – delnan
Я думаю, что это ошибка, но вы можете попробовать материал «vm» для узла - http: //nodejs.org/api/vm.html – JoshRagem
Это для концепции игровой концепции для удовольствия, я не могу доверять клиентов для выполнения кода. Я хочу сделать это на стороне сервера по этой причине и потому, что вывод будет сериализован и отправлен одному или нескольким другим клиентам. Похоже, что модуль vm или что-то обертывание - это то, что я хочу. –