Разрешения плагин Node JS

Я создаю веб-сервер с Sails.js и хочу позволить третьему разработчику создавать плагины node.js, устанавливаемые с веб-страницы (магазина).

Моя проблема в том, что я не хочу, чтобы этот плагин требовал парусов (или других критически важных модулей), имел доступ к базе данных и сервисам и делал то, что хотел. Например, используя fs и удалите все файлы.

Как я могу это сделать? Я понятия не имею, может ли node.js заблокировать некоторые скрипты в этом собственном каталоге

1 ответ

Решение

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

Из вашего описания ваши плагины больше похожи на код браузера javascript, так что я думаю, что вы можете использовать безголовый браузер для выполнения вашего кода и получения результата. Я никогда не пробовал это сам, но это должно работать. Вам просто нужно выяснить, как передать параметры в плагин и получить результат, также производительность будет очень плохой, потому что безголовый браузер довольно тяжелый. Попробуйте посмотреть на

http://phantomjs.org/

Другим решением является запуск плагинов непосредственно внутри узла, но санация кода перед запуском. Есть несколько проектов, таких как:

http://gf3.github.io/sandbox/

https://github.com/asvd/jailed

Они могут помочь вам ограничить возможности плагинов.

В любом случае, вы уверены в этом? в любой крупной платформе CMS, которую я видел (wordpress, joomla, drupal, liferay ...), автор платформы доверяет авторам плагинов, и плагины всегда могут делать то, что хотят.

Другие вопросы по тегам