要运行用户提供的 go、 Python 代码,该怎么做?

2020-12-13 13:43:09 +08:00
 laravel

用什么比较实现起来简单,安全。

3921 次点击
所在节点    程序员
26 条回复
learningman
2020-12-13 13:46:01 +08:00
docker
xiaket
2020-12-13 13:59:21 +08:00
AWS lambda
liuxey
2020-12-13 14:15:09 +08:00
无头无尾,无答案
laravel
2020-12-13 14:17:42 +08:00
@learningman 自己实现呢?
@xiaket
toomlo
2020-12-13 14:21:27 +08:00
@laravel #4 自己实现个 docker 也可以啊
xiaket
2020-12-13 14:22:20 +08:00
@laravel 自己实现的话, 里面的细节多得吓人, 而且几十几百个细节有一个做不好就是送人 RCE, 你确定? 反正我是没胆量自己去做.
laravel
2020-12-13 14:34:45 +08:00
@liuxey 就是用户提交的代码,要执行,给用户返回结果
neoblackcap
2020-12-13 14:36:15 +08:00
最安全快捷的就是按需开虚拟机。
BiteTheDust
2020-12-13 14:36:26 +08:00
可以研究一下各种 online judge 的做法
Greatshu
2020-12-13 14:38:01 +08:00
评测机?有现成的
zxCoder
2020-12-13 15:14:36 +08:00
据说是个大坑,强迫症不建议搞这个,或者找现成的评测机,(因为做不对绝对的安全,然后强迫症就会很烦,就是我了
loading
2020-12-13 15:21:26 +08:00
这做得好能成立一家公司了,大坑。
joesonw
2020-12-13 15:31:59 +08:00
docker 的话至少得上 AppArmor
性能不重要的话有 google 的 gvisor, 把 syscall shim 掉了, 绝对安全.
最好用虚拟机
或者 firecracker, kata 之类新轻量虚拟机也行
xyjincan
2020-12-13 15:42:50 +08:00
定期还原
renmu123
2020-12-13 16:14:19 +08:00
自己实现分分钟被黑掉
helsonxiao
2020-12-13 16:15:26 +08:00
可以参考一下青岛大学开源的 OJ 项目
laravel
2020-12-13 16:24:15 +08:00
这么复杂吗?我以为就是用 docker 那个原理,做下隔离、限制资源使用就行了
FS1P7dJz
2020-12-13 16:32:32 +08:00
虚拟机啊...
vmware 本身就有现成的技术从模板创建新的虚拟机
根据性能几分钟左右就可以创建出一个完全隔离且全新的环境
sirgod
2020-12-13 16:40:00 +08:00
go 的话可以用 playground https://github.com/golang/playground
cmdOptionKana
2020-12-13 17:14:11 +08:00
go 好像问题不大,官方给出了 play.golang.org 的源码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734957

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX