Разрешения плагин Node JS
Я создаю веб-сервер с Sails.js и хочу позволить третьему разработчику создавать плагины node.js, устанавливаемые с веб-страницы (магазина).
Моя проблема в том, что я не хочу, чтобы этот плагин требовал парусов (или других критически важных модулей), имел доступ к базе данных и сервисам и делал то, что хотел. Например, используя fs и удалите все файлы.
Как я могу это сделать? Я понятия не имею, может ли node.js заблокировать некоторые скрипты в этом собственном каталоге
1 ответ
Я не думаю, что этот узел предоставляет некоторые функции песочницы, поэтому, когда вы загружаете код js в узел, этот код может делать то, что он хочет.
Из вашего описания ваши плагины больше похожи на код браузера javascript, так что я думаю, что вы можете использовать безголовый браузер для выполнения вашего кода и получения результата. Я никогда не пробовал это сам, но это должно работать. Вам просто нужно выяснить, как передать параметры в плагин и получить результат, также производительность будет очень плохой, потому что безголовый браузер довольно тяжелый. Попробуйте посмотреть на
Другим решением является запуск плагинов непосредственно внутри узла, но санация кода перед запуском. Есть несколько проектов, таких как:
https://github.com/asvd/jailed
Они могут помочь вам ограничить возможности плагинов.
В любом случае, вы уверены в этом? в любой крупной платформе CMS, которую я видел (wordpress, joomla, drupal, liferay ...), автор платформы доверяет авторам плагинов, и плагины всегда могут делать то, что хотят.