我考虑实现一种在线执行 PHP 的程序,使用 PHP 实现,也就是动态解释用户输入的代码。不知道这样能否实现,求教
1
linpf 2019-03-11 15:03:43 +08:00 1
你说的是这个?
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 访问目标文件,限制最长执行时间]
|