有没有一种安全的方法从C ++中的用户/客户端执行代码?

时间:2015-09-17 15:03:01

标签: c++ linux security user-defined-functions

用户/客户端将其C ++代码编译为动态库(例如libuser.so)并上传到Linux(x64)上的服务器。

服务器进程打开libuser.so并调用其中的函数。

  1. 如何防止来自libuser.so任何错误的服务器进程核心转储(和其他错误)?
  2. 如何控制libuser.so可以访问的资源? (例如内存,磁盘和CPU)
  3. 也许有一些邪恶的用户/客户。

2 个答案:

答案 0 :(得分:3)

没有100%安全的情况,但通常情况如下:

  • 为特殊用户奉献此类活动
  • 限制此用户的所有内容
  • 每当libuser需要执行时,就会产生一个新进程作为这个特殊用户,chroot进沙盒并祈祷:

答案 1 :(得分:0)

除了SergeyA的回答,我建议使用vmwarevirtualbox或类似的东西在虚拟机上执行代码。您可能可以为每个用户创建一个新的虚拟机,每个会话(可能太昂贵)等,共享一些路径,复制libuser.so并使用RPC进行调用并获得结果。

使用https://www.docker.com/代替vmware等可能会简化创建新虚拟机并使其更便宜。