gpt4 book ai didi

node.js - 启动另一个 Node 文件,使用 NodeJS API 限制

转载 作者:搜寻专家 更新时间:2023-10-31 23:47:21 26 4
gpt4 key购买 nike

如何启动另一个 NodeJS 应用程序(作为子进程)并限制某些 NodeJS API 文件(例如不允许该 NodeJS 进程访问 require('fs')) .

此外,如果这是可能的并且我要限制对 require('fs') 的访问,用户是否可以通过任何其他方式访问文件系统? (忽略通过命令行)

最佳答案

简短的回答:你不能。


require 是一个全局函数,您可以在文件范围内重新定义它:

require = function(module) { return null; };
// OR
global.require = function(module) { return null; };

此更改是您在其中进行修改的文件的本地更改,因此您无法使用此文件启动 child_process 来“准备”环境。

另一个想法是弄乱 require 缓存。 console.logging require 变量,您可以看到它存储了所需文件的缓存。您可以简单地要求所有您想要设为私有(private)的模块,并在缓存中用其他对象或空对象替换(而不是删除)它们。遗憾的是...如果您的用户知道 require 的工作原理,他基本上可以清除 require 缓存并再次要求文件,从而使该解决方案无法实现。


一个潜在的解决方案可能是强制用户使用函数包装 require:

var myRequire = function(moduleName) {
// Validate or refuse requiring depending on the `moduleName` value
...
else
return require(moduleName);
};

并首先检查用户是否没有使用全局 require 函数(可能是通过自定义 JS 解析器或其他东西?)。

希望对您有所帮助!

关于node.js - 启动另一个 Node 文件,使用 NodeJS API 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34174040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com