如何安全地执行c代码

问题描述 投票:0回答:4

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

由于用户可以提交任何代码(包括病毒或其他故障代码)。我必须处理这个问题。

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

c
4个回答
4
投票

我无法回答您有关 Windows 的问题 -- 我可以告诉您有关 Linux 的问题。

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

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

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


2
投票

你的问题可能相当于停止问题,并且可能没有防弹答案(想想恶意

C
代码中的asm,伪造函数指针,计算转到,缓冲区溢出破坏返回地址,
dlsym
) &
dlopen
等)。

正如 Shawn 在他的评论中提到的(参考这个问题),您可以使用沙箱技术。 Alinsoar 的答案向您展示了问题的复杂性。


1
投票

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.