1

我正在开发一个类似于hackerrank.com的平台,有人可以在其中提交C代码,然后该代码将被编译并在我的服务器上运行,但我想限制一个人能够执行的C指令集我的服务器。

例如:将指令集限制为仅 I/O。

我的第一种方法是解析代码并查找恶意代码,但这很幼稚,因为它很容易被覆盖(shell 代码、混淆等)

我的第二种方法(我认为可行的方法是删除所有“不必要的”标题,只留下 stdio.h、math.h、stdlib.h 等……仅举几例。

但是后来我认为可能可以从 gcc 限制 C 的指令集,但是在阅读了 gcc 的 man 条目后,我找不到任何接近我需要的东西,所以我想知道这是否可能。

如果这是不可能的,那么解决这个问题的安全方法是什么?除了摆脱不必要的库。

谢谢!

4

1 回答 1

0

您可以使用 OpenBSD 上提供的 systrace 来限制系统调用。我敢肯定 linux 和其他操作系统有一个等价物。这将允许您将系统调用限制为仅文件 io 而不是套接字和分叉之类的东西。

于 2013-04-10T03:40:51.663 回答