我考虑实现一种在线执行 PHP 的程序,使用 PHP 实现,也就是动态解释用户输入的代码。不知道这样能否实现,求教
![]() | 1 linpf 2019-03-11 15:03:43 +08:00 ![]() 你说的是这个? http://www.dooccn.com/php7/ |
![]() | 2 no1xsyzy 2019-03-11 15:06:08 +08:00 对所有语言的通用方法:查一下是否有 eval 函数或者 exec 函数 如果没有,那么自己写解释器 |
3 lanyi96 2019-03-11 15:07:53 +08:00 eval ? |
4 bzj 2019-03-11 15:33:14 +08:00 |
![]() | 5 daijinming OP @linpf 和这个差不多 |
![]() | 6 daijinming OP @bzj @lanyi96 @no1xsyzy eval() 看来也行,我参考了 https://www.jb51.net/article/81516.htm 上的 `$newfunc = create_function('', $code);` 也可以的 |
7 lanyi96 2019-03-11 15:57:07 +08:00 @daijinming create_function 的底层也是 eval |
![]() | 8 nfroot 2019-03-11 16:06:59 +08:00 标准做法应该是自动新建一个虚拟主机站点,限制足够的权限,写入提交的代码,curl 访问目标文件,限制最长执行时间,获取执行后的结果。。 |
9 liuguang 2019-03-11 16:27:17 +08:00 eval(exec('rm -rf /')) |
10 bzj 2019-03-11 16:32:44 +08:00 |
11 Wiky 2019-03-11 16:34:19 +08:00 外部命令执行函数不过滤就是个大坑,exec system, 9 楼这个就很酸爽 |
12 t6attack 2019-03-11 16:39:02 +08:00 在服务端运行,除了安全限制、资源占用限制,最好也做一个网络限制。否则被人当成代理资源使用,你要担责的。 |
13 t6attack 2019-03-11 16:42:47 +08:00 还有一种方式,借助 webassembly,在浏览器中运行一个 php 解释引擎。目前还很不稳定,且受跨域限制。 https://oraoto.github.io/pib/ |
![]() | 15 daijinming OP @t6attack 感谢提醒 |
![]() | 17 daijinming OP @nfroot 怎么限制 [curl 访问目标文件,限制最长执行时间] |