java - 如何为不受信任的应用程序运行创建沙箱?

标签 java .net native sandbox

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

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

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

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

最佳答案

我刚刚找到了解决方案。解决方案是使用 ReactOS 作为 VirtualBox 上的 guest 操作系统。因此,因为我想使用 4-5 台 PC 和每台 PC 上大约 20 个 guest 操作系统创建“计算集群”,所以我需要有 guest 操作系统,它不会占用大量内存。 ReactOS 占用大约 25 Mb 或 RAM。还有 25 个用于显卡模拟和其他 VirtualBox 的东西。我将创建部署服务来部署我需要在 ReactOS 中运行的应用程序。之后, guest 操作系统将收到有关部署完成的通知,并将运行已部署的应用程序。应用程序完成工作后,所有日志将被复制到主机,而 guest 虚拟机将回滚到快照。因此,如果有人上传病毒,其所有工作结果将被自动清除。我可以运行很多副本,因为 ReactOS 仅占用 25-30 Mb RAM

关于java - 如何为不受信任的应用程序运行创建沙箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10947246/

相关文章:

java - 在属性文件中转义 json 字符串

java - Java 中的主类。叫什么?

java - https 的 async-http-client 的 CertificateException

.net - 如何仅使用 Autofac 注入(inject)一些构造函数参数并结合使用 InjectionModule

c - STATUS_PENDING 是什么意思?

java - 将容器连接到mysql数据库并访问它

.net - 使用 JSON.Net 从 NetworkStream 反序列化或解析 JSON

c# - 使用 .Net c# 从 PDF 中提取图像

jvm - 不要同时启用 JIT 和非 JIT 的解释器最终生成机器代码

map - 在 c++/cli 中建立托管对象和 native 指针之间的映射?