Php 如何安全地允许用户定期提交代码运行?
基本上,我需要允许用户提交代码,以便在服务器端定期运行 用户应该提交简单的脚本,我将运行他们的代码服务器端,以确定谁提出了更好的解决方案。我创建了一个简单的提交表单,代码存储在SQL数据库中 我显然担心安全,但我也不知道该用哪种语言。我需要一种具有简单语法的脚本语言,让我限制用户可以做的事情的数量(我只需要让他们定义变量、创建函数、使用循环以及一些数组和代数函数)。甚至可能创建一个具有简单语法的伪语言 所以基本上:Php 如何安全地允许用户定期提交代码运行?,php,cron,sandbox,sanitization,Php,Cron,Sandbox,Sanitization,基本上,我需要允许用户提交代码,以便在服务器端定期运行 用户应该提交简单的脚本,我将运行他们的代码服务器端,以确定谁提出了更好的解决方案。我创建了一个简单的提交表单,代码存储在SQL数据库中 我显然担心安全,但我也不知道该用哪种语言。我需要一种具有简单语法的脚本语言,让我限制用户可以做的事情的数量(我只需要让他们定义变量、创建函数、使用循环以及一些数组和代数函数)。甚至可能创建一个具有简单语法的伪语言 所以基本上: 我能用什么语言 如何定期运行用户代码?(只知道cronjobs,但我不知道它们是
如果您专门针对PHP,则可以使用runkit扩展—专门创建用于运行用户提供的PHP代码: 还有一个更新的runkit项目可用(尽管您必须手动编译):
第一季度。我能用什么语言 A1。差不多。因为编译器会增加系统的复杂性,所以最好使用解释(或JIT编译)语言 问题2。如何定期运行用户代码?(只知道cronjobs,但我不知道它们是否允许长时间执行) A2。cron工作可能是一条出路。它不关心执行时间。但是,这意味着您的任务是确保仅在上一次运行已完成时才重新启动作业(假设您希望它这样做) 第三季度。创建一种伪语言是个好主意吗?如果是,请给我指出正确的方向 A3。发明轮子很少是个好主意。您可以这样做,但有理由怀疑这是必要的和/或可取的
我的个人目标是将JavaScript作为脚本语言——因为它非常广泛,有大量的工具和文档。因此,您可能需要查看并在服务器端运行它 我会说要么有某种沙箱(chrooted服务器),这样就不会有什么真正的结果。。或者解析/解释代码(如果代码不复杂),请看这里您应该指定情况的上下文-在某些情况下,最好创建受其命令限制的自己的脚本语言。在不同的情况下,我会使用一些虚拟环境。嘿,我试图详细说明我想让用户做什么,语言应该非常有限,我只希望他们能够定义变量,做数学,比较,循环,定义函数,并允许一些函数处理数组。