Javascript 用户代码的可嵌入js解释器?

Javascript 用户代码的可嵌入js解释器?,javascript,node.js,Javascript,Node.js,想象一下这个网站,用户可以通过js生成内容。 比如说 用户点击按钮 它请求我们的api而不是用户的api Api返回带有特定字段的对象 我们通过用户代码生成的用户定义的选项或基于我们发送的数据的一些计算结果来显示select 其思想是让用户能够使用我们的结构编辑可见内容,我们事先知道返回对象中的哪些字段做什么 第一种溶液在5分钟内形成 用户点击按钮 它将所有必需的数据作为上下文发送到我们的api 我们从数据库中获取用户定义的代码 //这是我们编写的非用户代码,我们知道这段代码是安全的 cons

想象一下这个网站,用户可以通过js生成内容。 比如说

用户点击按钮

它请求我们的api而不是用户的api

Api返回带有特定字段的对象

我们通过用户代码生成的用户定义的选项或基于我们发送的数据的一些计算结果来显示select

其思想是让用户能够使用我们的结构编辑可见内容,我们事先知道返回对象中的哪些字段做什么

第一种溶液在5分钟内形成

用户点击按钮

它将所有必需的数据作为上下文发送到我们的api

我们从数据库中获取用户定义的代码

//这是我们编写的非用户代码,我们知道这段代码是安全的 const APP_CONTEXT=parseInput;//这可以是命令行中的参数 const ourLibrary=需要“ourLibrary”; //APP_CONTEXT是包含前端数据的变量。我们在应用程序上下文中控制数据,用户无法写入 //下面是用户定义的代码 const someVar=APP_CONTEXT['fielddescripbedinourdocumentation']; const anotherVar=APP_CONTEXT['anotherfieldfrom documentation'];
ourLibrary.sendToFrontendsomeVar+另一个var;我想让用户只调用所有内置js函数Math.min、Math.max、new Date、+、-、declare函数等等。请注意,即使您成功地隔离了用户—没有网络请求、没有文件系统访问权限、没有导入库等,恶意用户仍然可以简单地为;;;编写代码;;;并提交一个无限循环。它将独立工作,但会浪费服务器的资源。更复杂的攻击会使用更昂贵的计算,但这并不重要——其结果是耗尽服务器的资源,从而给服务器造成损失。您应该了解沙箱JS和/或进程的实用程序和工具。我不能推荐,但我知道它们是存在的。这应该允许您将运行用户代码的进程限制为1。与系统交互,例如,系统处于有效脱机状态,无法访问磁盘2。限制资源的使用-减少对CPU和内存的访问3。时间限制进程,因此它不会永远运行。即使有人试图做浪费计算,它将在有限的时间内工作。