linux – 在线虚拟机中安全地评估perl代码
更新2:我得到这个工作,它是活的:)
更新:请检查评论,@ikegami答案正在工作,但有一个小问题.我可能会做一些很简单的事情. 我最近决定我不得不学习Linux / Perl,然后我开始构建这个www.tryperl.com作为一个学习项目.这是一个Cloud IDE. (自从我第一次在Perl,linux,bash,osx手中开始只有几个月,所以请轻松一点) 目前我评估代码与Safe.pm,但我的游戏计划是: 一个单独的Amazon EC2 VM,它将评估不安全的perl代码并返回结果.虚拟机将被阻止从互联网和负载均衡.然后,我可以从快照重新设置这台机器. 这主要是我将使用代码来评估服务器上的perl代码,我使用Time::Out进行超时管理: my $code = .. my $arg = .. #create a file with random name my $filename = rand().".pl"; open(FILE,">$filename") print FILE $code; close(FILE); #use Time::Out to timeout after 10 secs my $ret = timeout 10 => sub { #run the file just created with $arg as an argument. << This is IMP my $r = `perl $filename $arg`; return $r; }; if ($@){ return $@; } return $ret; 我的问题 >我可以以某种方式避免物理文件创建,并使用$arg管道$代码? 我的开发框是OSX 10.8,生产服务器是前端的RHEL和Perl eval Machine的Ubuntu.我跑EC2.查看完整的堆栈details here. 任何详细的答案将会赞赏和奖励代表和独角兽尘土:) 解决方法
经过13天的努力,终于做到了!
我探索了FreeBSD Jails,我的lack of networking经验和事实,我不得不重建操作系统多次驱使我离开. FreeBSD真的很酷!我会很快回来 我在OpenVZ看起来很惨淡,然后感谢@ewwhite我重新审视了Linux Containers,并给了它一个适当的镜头. 文档不是很好,但this article真的帮助了一切. >我在一个负载均衡器下安装了多个容器:HAProxy. 一个限制:我不太了解网络,所以我通过禁用主机端口转发来阻止互联网上的监狱.然而,监狱仍然需要在网络上,以便主机与之通信,因此,您仍然可以在监狱内执行ping,以解决域,但不会响应.所以任何web请求都会失败.我还对Ping进行字符串扫描并阻止它. 任何建议或改进将是非常欢迎! 我想感谢@JakeFeasel @ikegami @ewwhite @chris-s和ubuntu.SE和unix.SE的人们的帮助: 这是它的样子: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |