Я хотел бы иметь возможность позволить пользователям отправлять произвольный код JavaScript, который затем отправляется на сервер Node.JS и безопасно выполняется до того, как вывод будет отправлен обратно нескольким клиентам (как JSON). Функция eval
приходит на ум, но я знаю, что это связано с несколькими проблемами безопасности (пользовательский код будет иметь доступ к Node File API и т.д.). Я видел некоторые проекты, такие как Microsoft Web Sandbox и Google Caja, которые позволяют выполнять дезинфицированную разметку и script (для встраивания сторонних объявлений на веб-сайты), но похоже, что это инструменты на стороне клиента, и я не уверен, что их можно безопасно использовать в Node.
Есть ли стандартный способ для песочницы и запускать ненадежный JavaScript в Node, получая вывод. Ошибочно ли пытаться сделать это на стороне сервера?
РЕДАКТИРОВАТЬ: Не важно, чтобы пользователь мог использовать все возможности JavaScript, на самом деле было бы предпочтительнее иметь возможность выбирать, какие API-интерфейсы будут предоставляться коду пользователя.
EDIT: Я собираюсь продолжить и обновить то, что нашел. Этот модуль Sandcastle ( bcoe/sandcastle
), похоже, нацелен на то, что я имею в виду. Не уверен, насколько это безопасно, но поскольку я не для чего-то слишком важного, я думаю, что попробую. Я добавлю свой собственный ответ, если мне удастся это сделать.