TL; DR
Использование npm — пакетного менеджера NodeJS — сопряжено с проблемами безопасности. Штатными средствами невозможно контролировать права доступа, предоставляемые библиотекам. Вкупе с обилием микромодулей это может привести к непредсказуемым последствиям, часть из уже случившегося описана здесь, и в лучших традициях экосистемы npm я на неё сошлюсь.
Под катом описывается proof-of-concept библиотеки, реализующей механизм загрузки npm-модулей с возможностью установить права подобно тому, как на Android можно выдавать приложению конкретные разрешения.
Вместо
var lib = require('untrusted-lib');
предлагается писать где-нибудь
var paraquire = require('paraquire')(module);
и затем
var lib = paraquire('untrusted-lib');
или же
var lib = paraquire('untrusted-lib', {builtin:{https:true}});
Исходный код доступен на гитхабе под LGPLv3.
Кроме того я, не будучи достаточно опытным NodeJS-разработчиком, прошу у сообщества советов и обсуждения.
Читать полностью »