首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails应用程序中的沙箱JS执行

Rails应用程序中的沙箱JS执行
EN

Stack Overflow用户
提问于 2016-12-22 15:10:51
回答 1查看 175关注 0票数 1

背景

我正在构建一个Rails应用程序,允许用户上传将在服务器上执行的自定义JavaScript。此自定义脚本用于定义API响应上的字段。下面的列表描述事件的顺序。

  1. 用户通过POST将HTTPS请求发送到应用程序API。
  2. API控制器制定JSON响应
  3. 执行用户的脚本,并将输出保存为JSON响应上的字段
  4. API响应被发送

下面的方法用于脚本执行。script_body包含用户的自定义JavaScript,并作为属于用户的对象上的文本字段保存在DB中。

代码语言:javascript
运行
复制
def run_script
  begin
    Timeout::timeout(2) { script_output = ExecJS.exec(script_body).to_s }
  rescue => e
    logger.info  "Script failed: #{e.message}"
    script_output = "(Script failed with the following error: #{e})"
  end
end

问题

我想知道如何最好地对JS脚本的执行进行沙箱,以减轻在服务器上执行用户脚本的安全性问题。我想知道以下建议的方法:

  • 确保JS脚本不能访问服务器上的任何文件
  • 阻止脚本访问Rails应用程序或DB
  • 防范任何其他恶意活动(我不是专家,所以请原谅缺乏细节)
  • 保持合理的性能(需要在API调用中执行)

其他信息

我试图在Ruby应用程序中找到一些沙箱JS执行的例子,但没有发现多少。我看过以下创业板(https://github.com/tario/shikashi)。但是,这似乎只是Ruby代码的沙箱。我担心我会为ExecJS.exec提供执行特权,这样JS就可以做它想做的任何事情。我不确定这是不是最好的方法。

EN

回答 1

Stack Overflow用户

发布于 2016-12-22 16:15:49

也许你可以使用红宝石的$SAFE水平

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41286208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档