在网站Ideone中,用户上传要在远程服务器上运行的代码。这类似于在线法官的职能。
问题是用户可能会上传试图“入侵”系统的代码。我知道在C和C ++中很容易禁用某些系统调用(修补一些.dll),但我对其他语言不太确定。
如果您要在线评判支持更高级别的语言(Erlang,Haskell),您将如何保护您的系统?
答案 0 :(得分:4)
答案 1 :(得分:3)
作为非特权用户在沙箱中运行。这并非绝对万无一失,但它使得持久性损害或严重妥协的障碍非常高。它也不依赖于可能的选项或对相关语言运行时的修改。如果您正在处理完全编译的语言(即没有运行时解释器),您也可以这样做。
例如,拿Erlang。设置chroot jail,其中仅包含运行Erlang所需的内容。添加非特权用户帐户和主目录。引入要运行的代码,验证所有文件/目录权限,更改为非特权UID并运行代码。
您可以在上面引用的维基百科文章中找到有关设置jail的更详细说明。不同操作系统的程序和要求略有不同。