Java 如何为运行的不受信任应用程序制作沙盒?

Java 如何为运行的不受信任应用程序制作沙盒?,java,.net,native,sandbox,Java,.net,Native,Sandbox,我想创建windows服务,它通过一些队列任务接收,以同时运行许多控制台应用程序。我还想让我的服务器安全。因为任何人都可以将病毒上传到我的服务器并安排它运行。应用程序可以用Java、C编写,也可以是纯C编写的本机应用程序 最简单的方法是使用虚拟机运行应用程序。但虚拟机有很多资源要运行,事实上,对于每个虚拟机,我将运行单独的Windows副本,这需要大量内存和处理器资源 第二种方法是编写文件系统微过滤器内核驱动程序来控制文件系统和windows注册表。我可以创建独立文件夹并限制对其他文件夹的所有访

我想创建windows服务,它通过一些队列任务接收,以同时运行许多控制台应用程序。我还想让我的服务器安全。因为任何人都可以将病毒上传到我的服务器并安排它运行。应用程序可以用Java、C编写,也可以是纯C编写的本机应用程序

最简单的方法是使用虚拟机运行应用程序。但虚拟机有很多资源要运行,事实上,对于每个虚拟机,我将运行单独的Windows副本,这需要大量内存和处理器资源

第二种方法是编写文件系统微过滤器内核驱动程序来控制文件系统和windows注册表。我可以创建独立文件夹并限制对其他文件夹的所有访问。我还可以为每个正在运行的线程和进程设置配额。但我无法控制内存,内存可以用来破解我的沙盒


理想情况下,我需要一个可以在沙盒中运行应用程序的解决方案,还需要控制这个沙盒清理它,将新应用程序部署到其中,运行刚刚部署的应用程序,从沙盒复制日志文件。

我刚刚找到了解决方案。解决方案是在VirtualBox上将ReactOS用作来宾操作系统。所以,因为我想用4-5台PC和大约20个客户操作系统来创建计算集群,所以我需要客户操作系统,这不会占用很多内存。ReactOS消耗大约25 Mb或RAM。视频卡仿真和其他VirtualBox功能。我将创建部署服务来部署运行到ReactOS中所需的应用程序。在此之后,来宾操作系统将收到部署完成的通知,并将运行部署的应用程序。应用程序完成工作后,所有日志将复制到主机,来宾VM将回滚到快照。因此,如果有人上传病毒,其所有工作结果将自动清除。我可以运行很多拷贝,因为ReactOS只占用25-30 Mb的RAM

为什么要为每个应用程序运行单独的VM?只需运行一个虚拟机作为沙箱,并在该虚拟机中运行所有传入的应用程序。不可能。有人可以上传一个可以控制其他应用程序运行并破坏其结果的应用程序。