【问题标题】:Processing Javascript from an untrusted source serverside [closed]从不受信任的源服务器端处理 Javascript [关闭]
【发布时间】:2015-06-07 11:11:56
【问题描述】:

目标是在 PHP 中创建一个系统,允许用户提交字符串,将 javascript 函数应用于该字符串,然后在 javascript 函数处理后返回字符串的值。该网站有很多用 PHP 编写的其他功能,因此不会改变。但是,如果需要,我愿意使用其他堆栈来完成项目的这个组件(node.js、Java 等)

有没有人知道如何通过以下限制来实现这一点:

  1. 处理用户提交值的函数必须是javascript
    1. javascript 函数的处理必须在服务器端
    2. javascript 函数不应访问文件系统(加载文件、保存文件等)或任何类型的基于 IO 功能
    3. javascript 函数应该不能占用超过一定数量的内存(比如说 5 mb),但可以定义(不是 必须在运行时,但在某处可配置)
    4. javascript函数的运行时间不能超过一定的毫秒数(比如说3000毫秒),但是可以定义(不是 必须在运行时,但在某处可配置)
    5. 如果处理 javascript 出错,系统应该能够返回
    6. javascript 函数不应调用任何外部服务(http 请求等)。我基本上只希望系统能够执行利用“基于 CPU”功能的代码,而无需连接到任何外部源。我将它放在引号中,因为我知道这实际上不是一个术语,但希望它有助于澄清事情。

本质上,我正在尝试创建一个系统,该系统可以处理来自服务器端不受信任来源的 Javascript 函数并返回函数的值。我一直在寻找任何图书馆或对此案例研究的参考,但没有找到任何理想的东西。

【问题讨论】:

  • 我已经提供了一个带有约束的目标,并且正在寻找一种能够在明确解决约束的同时实现目标的架构方法。

标签: javascript php serverside-javascript


【解决方案1】:

首先想到的是 Node.js,服务器端 JavaScript。沿着这条路线往下看,有一个沙盒模块,http://gf3.github.io/sandbox/

如果您想更加安全,您可能希望在其自己的隔离机器/服务器/docker 映像上运行它,以在有人设法逃离沙箱时限制暴露。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2010-12-31
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多