Php 用户可以在web应用程序中创建自己的代码/公式的沙箱
正在寻找一些指导,为我指明正确的方向。我们的web服务是在Symfony/PHP中构建的(然而,这个问题可能有点平台无关) 首先让我解释一下我们当前的设置: 该数据库包含数千个数据集。每个数据集仅包含日期/值对,其中值始终为浮点或整数。示例(虚拟数据): 我们的服务结合了这些数据集,并应用(有时很复杂)公式根据数据计算“结果”。基本上是一个函数,它接收所需的日期和需要合并的数据源,然后进行一些计算并返回当天的“结果”。例如,根据上述数据集,结果可能是“预计在伦敦销售的啤酒瓶” 根据上述三个数据集,预计在伦敦销售的啤酒瓶现在实际上是一个新的数据集。我们现在可以使用这个数据集来计算新的结果,比如“预期酒精销售总额” 问题: 我们希望让我们的用户能够编写自己的公式。我们的用户在一个基本编程技能普遍的利基市场工作。我们需要的是一个安全的沙箱环境,人们可以使用一种尚待确定的编程语言(或自定义语言?)来编写过程代码,从而允许:Php 用户可以在web应用程序中创建自己的代码/公式的沙箱,php,symfony,security,Php,Symfony,Security,正在寻找一些指导,为我指明正确的方向。我们的web服务是在Symfony/PHP中构建的(然而,这个问题可能有点平台无关) 首先让我解释一下我们当前的设置: 该数据库包含数千个数据集。每个数据集仅包含日期/值对,其中值始终为浮点或整数。示例(虚拟数据): 我们的服务结合了这些数据集,并应用(有时很复杂)公式根据数据计算“结果”。基本上是一个函数,它接收所需的日期和需要合并的数据源,然后进行一些计算并返回当天的“结果”。例如,根据上述数据集,结果可能是“预计在伦敦销售的啤酒瓶” 根据上述三个数据集
- 变量的使用
- 应用一些基本的数学基础:加法,分心,乘法,除法
- if/else块
- 理想情况下,能够创建和操作阵列
- 理想情况下,能够使用循环
任何关于实现此功能的最佳方法的想法都将受到高度赞赏,即使只是指向正确的方向也会有很大帮助!非常感谢 我认为您的问题有很多可能的解决方案,选择“正确的解决方案”在很大程度上取决于用户的需求和体验 我最近有一个Java项目,用户可以编写评分函数来评估对象列表的状态。经过一番搜索,我决定使用JavaNashorn引擎,因此使用Javascript作为编程语言。有一个名为PHP的替代方案集成了V8 Javascript引擎。我从来没用过这个,但是- 阅读文档-与Nashorn非常相似 1。我们应该允许他们使用哪种编程语言 我认为没有客观的理由选择X语言而不是Y语言。但是javascript对用户来说有一些优势。对我来说,Javascripts的功能方面是决定性的因素 优点:
- 您可以将PHP变量传递给javascript,反之亦然。对于数组和对象,这甚至是可能的
- Javascript是一种非常流行的编程语言,我们的用户可能已经知道了
- 您的用户可能会使用不同的编程范例来满足他们的需求(过程、功能、面向对象)
- Javascript v8非常快,因为它能够及时编译为本机代码
- 您需要安装PHP扩展v8js和v8JavaScript引擎库(libv8)
我看不到函数白名单功能。但是考虑到它是在沙箱中运行的,我认为没有必要这样做?我认为有很多可能解决您的问题的方法,选择“正确的方法”在很大程度上取决于用户的需求和体验 我最近有一个Java项目,用户可以编写评分函数来评估对象列表的状态。经过一番搜索,我决定使用JavaNashorn引擎,因此使用Javascript作为编程语言。有一个名为PHP的替代方案集成了V8 Javascript引擎。我从来没用过这个,但是- 阅读文档-与Nashorn非常相似 1。我们应该允许他们使用哪种编程语言 我认为没有客观的理由选择X语言而不是Y语言。但是javascript对用户来说有一些优势。对我来说,Javascripts func
Date | Temperature in London
----------------------------------
10-07-2017 | 28
11-07-2017 | 26
Date | Is Bank Holiday
----------------------------
10-07-2017 | 1
11-07-2017 | 0
Date | Population in London
---------------------------------
10-07-2017 | 8788235
11-07-2017 | 8789804