如何安全地执行c代码

时间:2012-07-16 10:32:22

标签: c compiler-construction

在这种情况下,用户将通过浏览器将他/她的C代码提交给我的服务器。 然后代码将在我的服务器上编译和执行,输出将发送给用户。

由于用户可以提交任何代码(包括病毒或其他故障代码)。我将不得不照顾这一点。

所以我的问题是,如何从这些代码中保护我的服务器?

4 个答案:

答案 0 :(得分:4)

我不能用Windows回答你 - 我可以告诉你linux。

这是一个极其复杂的问题。你需要考虑:

  • 配额限制
  • 编译/执行要作为非特权用户运行的代码的进程。
  • 不允许进程运行超过N秒
  • 不允许进程分配太多内存

我可以说这是一个长期项目,几周后你无法正确完成。

答案 1 :(得分:2)

您的问题可能等同于halting problem,可能没有防弹答案(在恶意 C 代码中考虑asm,伪造函数指针,计算goto,缓冲区溢出会丢弃返回地址,dlsym& dlopen等。)

正如Shawn在他的评论中所提到的(指this question),你可以使用沙盒技术。 Alinsoar的answer向您展示了问题的复杂性。

答案 2 :(得分:1)

要考虑的其他问题:允许访客进程的权限:是否允许他打开套接字?如果是这样,你允许他进行什么交通?

如果您打开套接字,那么问题会变得更加复杂,因为他可以通过该套接字发起攻击......

答案 3 :(得分:0)

您可以考虑使用ideone API,某些移动设备软件会这样做(CodeToGo for example