riy*_*ali 3 javascript function node.js
我希望允许我的网站的用户(我的同事)在 Node.js 服务器上创建和运行任意函数。该函数可以上传到存储它的服务器,当有人访问该服务器上的 URL 时,它应该执行该函数。该函数不需要在沙箱中进行检查或执行,并且代码应被视为可信的。我怎样才能实现这样的目标?我知道这与FaaS非常接近,但我不认为它是一样的......我仍然需要服务器对请求运行一些预处理等。
如果您真正了解所有后果,您可以使用表单eval函数来运行服务器上以文本/字符串形式存储的代码。
请参阅此处 - https://nodejs.org/api/vm.html,例如,如其中指定的那样:
示例:在 VM 中运行 HTTP 服务器
当使用 或script.runInThisContext()时vm.runInThisContext(),代码在当前 V8 全局上下文中执行。传递到此 VM 上下文的代码将具有其自己的隔离范围。
为了使用 http 模块运行简单的 Web 服务器,传递到上下文的代码必须require('http')自行调用,或者引用传递给它的 http 模块。例如:
'use strict';
const vm = require('vm');
const code = `
(function(require) {
const http = require('http');
http.createServer((request, response) => {
response.writeHead(200, { 'Content-Type': 'text/plain' });
response.end('Hello World\\n');
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');
})`;
vm.runInThisContext(code)(require);
Run Code Online (Sandbox Code Playgroud)
注意:require()上述情况中的 与它所传递的上下文共享状态。当执行不受信任的代码时,这可能会带来风险,例如以不需要的方式更改上下文中的对象。
| 归档时间: |
|
| 查看次数: |
4123 次 |
| 最近记录: |