0

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

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

所以我的问题是,如何保护我的服务器免受此类代码的影响?

4

4 回答 4

4

我不能为 Windows 回答你——我可以告诉你 linux。

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

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

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

于 2012-07-16T10:38:11.193 回答
2

您的问题可能等同于停止问题,并且可能没有防弹答案(想想asm恶意C代码、伪造函数指针、计算 goto、缓冲区溢出破坏返回地址等)dlsymdlopen

正如肖恩在他的评论中提到的(指这个问题),您可以使用沙盒技术。Alinsoar 的回答向您展示了问题的复杂性。

于 2012-07-16T10:36:00.007 回答
1

其他要考虑的问题:允许来宾进程有什么权限:是否允许他打开套接字?如果是这样,你允许他什么流量?

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

于 2012-07-16T20:38:00.787 回答
0

您可能会考虑使用ideone API,一些移动设备软件会这样做(例如 CodeToGo

于 2012-07-16T22:17:41.527 回答