language-agnostic - 像 codepad.org 和 ideone.com 这样的网站如何将您的程序沙箱化?

标签 language-agnostic operating-system sandbox system-calls

我需要在我的网站上编译并运行用户提交的脚本,类似于 codepadideone做。如何对这些程序进行沙箱处理,以免恶意用户破坏我的服务器?

具体来说,我想将它们锁定在一个空目录中,并防止它们在该目录之外的任何地方读取或写入、消耗过多的内存或 CPU,或者执行任何其他恶意行为。

我需要从沙箱外部通过管道(通过标准输入/标准输出)与这些程序进行通信。

最佳答案

codepad.org 有一些基于 geordi 的内容,它在具有资源限制的 chroot(即限制在文件系统的子树中)中运行所有内容,并使用 ptrace API 来限制不受信任的程序对系统调用的使用。请参阅http://codepad.org/about .

我以前使用过Systrace ,另一个用于限制系统调用的实用程序。

如果策略设置正确,将阻止不受信任的程序破坏沙箱中的任何内容或访问不应访问的任何内容,因此可能不需要将程序放在单独的 chroot 中并在每次运行时创建和删除它们。尽管这会提供另一层保护,但这可能不会造成伤害。

关于language-agnostic - 像 codepad.org 和 ideone.com 这样的网站如何将您的程序沙箱化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3695858/

相关文章:

java - 为什么JVM仍然不支持尾调用优化?

sockets - Haskell与操作系统进行交互(中断)

c++ - 在运行时检查操作系统正在运行哪种语言

ios - 如何录制音频并将其保存到 Sandbox?

security - 确定何时或何时不转义输出

sql - 数据库安全问题

language-agnostic - 与 Perl 和 Ruby 比较的相似语言特性 __END__

java - 当为映射文件打开 FileOutputStream 时从 java.nio.MappedByteBuffer 读取会导致 "unsafe memory access"错误

javascript - 我如何对不受信任的用户提交的 JavaScript 内容进行沙盒处理?

javascript - 使用 polyfill 或 shim 让 HTML5 沙箱适用于 IE8/9