2015-06-06 5 views
2

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

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

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

ответ

0

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

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

http://phantomjs.org/

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

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

https://github.com/asvd/jailed

Они могут помочь вам ограничения полномочий плагинов.

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

+0

Спасибо за ваш ответ! Я проверю эту возможность, производительность важна для этого проекта (потому что он будет работать на малине pi), поэтому phantomjs не является хорошим решением. Модуль Sandbox лучше подходит для моих нужд. Да, мне нужно, чтобы другие плагины платформы CMS могли делать что угодно, кроме Wordpress или плагина joomla, вряд ли может сбой всего сервера, но с node.js, если он сбой или проблема, это весь сервер, который разбился ... Я хочу обеспечить минимум :) – jaumard