如何啓動另一個NodeJS應用程序(作爲子進程)並限制某些NodeJS API文件(例如,不允許該NodeJS進程訪問require('fs')
)。使用NodeJS API限制啓動另一個節點文件
此外,如果這是可能的,我想限制訪問require('fs')
會有任何其他方式的用戶可以訪問文件系統? (不考慮通過命令行)
如何啓動另一個NodeJS應用程序(作爲子進程)並限制某些NodeJS API文件(例如,不允許該NodeJS進程訪問require('fs')
)。使用NodeJS API限制啓動另一個節點文件
此外,如果這是可能的,我想限制訪問require('fs')
會有任何其他方式的用戶可以訪問文件系統? (不考慮通過命令行)
簡答:你不能。
require
是一個全球性的功能,可以在文件的範圍重新定義:
require = function(module) { return null; };
// OR
global.require = function(module) { return null; };
這種變化是本地所做的修改文件,所以你無法啓動child_process
用這個文件來「準備」環境。
另一個想法是混亂require
緩存。 console.log
變爲require
變量,可以看到它存儲了所需文件的緩存。您可以簡單地將require
所有您想要私有的模塊替換(不刪除)它們與緩存中的其他對象或空對象。 不幸的是......如果你的用戶知道require
是如何工作的,他基本上可以清除require
緩存並再次需要這些文件,這樣就不可能解決這個問題。
一個潛在的解決辦法是強制用戶使用的功能包裝require
:
var myRequire = function(moduleName) {
// Validate or refuse requiring depending on the `moduleName` value
...
else
return require(moduleName);
};
,並檢查第一通過自定義JS也許用戶不使用全局require
功能(解析器還是什麼?)。
希望它有幫助!
完美答案!我將強制用戶使用自定義函數來使用模塊。謝謝! –