当前位置: 首页 > 面试题库 >

Linux中的沙箱

巫马嘉祯
2023-03-14
问题内容

我想创建一个Web应用程序,该应用程序将允许用户上传一些C代码,并查看其执行结果(该代码将在服务器上编译)。用户不受信任,这显然会带来巨大的安全隐患。

因此,我需要为应用创建某种沙箱。在最基本的级别上,我想将对文件系统的访问限制在某些指定的目录中。我无法直接使用chroot
jails,因为Web应用程序未以特权用户身份运行。我想设置监狱的suid可执行文件是一个选择。

上载的程序会很小,因此它们应该快速执行(最多几秒钟)。因此,我可以在预设的超时后终止该进程,但是如何确保它不会产生新的进程?或者如果我做不到,那么杀死整个pgid是一种可靠的方法吗?

除了“根本不做”之外,什么是最好的方法?:)我还错过了哪些其他明显的安全问题?

FWIW,该网络应用将使用Python编写。


问题答案:

连同其他建议,您可能会发现这很有用。

http://www.eelis.net/geordi/

这是http://codepad.org/about,codepad.org的有关页面。



 类似资料:
  • 这个文档描述了Mac OS X上的进程沙箱机制。 背景 沙箱将进程视为一种恶劣的环境,因为进程任何时候都可能被一个恶意攻击者借由缓冲区溢出或者其他这样的攻击方式所影响。一旦进程被影响,我们的目标就变成了,让这个有问题的进程能访问的用户机器的资源越少越好,并尽量避免在标准文件系统访问控制以外,以及内核执行的用户/组进程控制相关的行为。 查看概述文档了解目标与整体架构图表。 实现 在Mac OS X上

  • {“response_envelope”=>{“timestamp”=>“2015-10-06T22:55:49.604-07:00”,“ack”=>“success”,“correlation_id”=>“9f0f563554297”,“build”=>“17820627”},“currency_code”=>“usd”,“refund_info_list”=>{“refund_info”=>[

  • 安全是Chromium最重要的目标之一。安全的关键在于理解下面这点:在我们完整地理解了系统在所有可能的输入组合下表现出的行为之后,我们才能够真的保证系统安全。对于像Chromium这样庞大而多样化的代码库,推理它的各个部分可能的行为的组合几乎是不可能的。沙箱的目标是提供这样一种保证:不论输入什么,保证一段代码最终能或不能做的事情。 沙盒利用操作系统提供的安全性,允许不能对计算机做出持久性改变或者访

  • Jinja2 沙箱用于为不信任的代码求值。访问不安全的属性和方法是被禁止的。 假定在默认配置中 env 是一个 SandboxedEnvironment 实例,下面的代码展示 了它如何工作: >>> env.from_string("{{ func.func_code }}").render(func=lambda:None) u'' >>> env.from_string("{{ func.fu

  • Jinja2 沙箱用于为不信任的代码求值。访问不安全的属性和方法是被禁止的。 假定在默认配置中 env 是一个 SandboxedEnvironment 实例,下面的代码展示 了它如何工作: >>> env.from_string("{{ func.func_code }}").render(func=lambda:None) u&"" title="jinja2.sandbox.Security

  • 问题内容: 我正在考虑将Linux进程沙盒化的几种方法。使用具有(等)的选择之一。确保沙盒进程无法建立或接受真实的网络连接。但是我想完全禁用该进程的套接字,甚至连接到上的任何端口,并绑定到Unix doman套接字(甚至匿名)。我想这样做是为了通过绑定到数千个端口来防止进程使用过多的内核资源。我怎么做? 通常,我对许多沙箱方法(即Linux内核提供的方法和由强制执行的方法)感兴趣,但在这个问题上,