2010-04-01 51 views
7

在站点Ideone中,用户上载要在远程服务器上运行的代码。这与在线裁判的功能类似。如何保护网上法官免受恶意代码的侵害?

问题是用户可能上传试图“破解”系统的代码。我知道在C和C++中,禁用某些系统调用很容易(修补几个.dll),但我不太确定其他语言。

如果你想支持更高级别的语言(Erlang,Haskell)对在线评判你将如何保护你的系统?

+0

您可能想查看github上的“safeexec”项目 – daveagp 2012-04-02 22:13:54

回答

2

作为非特权用户在沙箱中运行。这并不是绝对的万无一失,但它使得持久的伤害或严重的妥协非常高的酒吧。它也不依赖于可能的选项或修改有问题的语言运行时间。如果您正在处理完全编译的语言(即没有运行时解释器),那么也可以这样做。

例如,拿Erlang。设置chroot jail,其中只包含运行Erlang所需的内容。添加一个非特权用户帐户和主目录。引入要运行的代码,验证所有文件/目录权限,更改为非特权UID并运行代码。

您可以在上面引用的维基百科文章中找到有关设置监狱的更详细说明。对于不同的操作系统,程序和要求略有不同。

相关问题