问题描述
假设我必须在计算机上运行Java,C ++或python3.8程序,但是我不希望这些程序访问我的系统信息,运行os命令或执行任何恶意活动。有没有一种方法可以针对上述每种语言进行操作?
解决方法
Java理论上对此有一个解决方案:“ SecurityManager”。您可以在Java代码中设置一个代码(您可以告诉系统:这是一些代码;请以管理员身份加载它)。
在某些事情发生之前会调用安全经理,并且可以拒绝该操作。几乎所有对安全性敏感的事物:
- 退出虚拟机
- 打开任何文件
- 打开任何网络连接
- 设置安全管理器
- 访问剪贴板
- 打印东西
- 可以影响线程加载的某些方面
您将告诉Java运行您编写的某个类文件,该类文件将设置一个安全管理器,然后将运行您要限制的应用程序。
请注意,您不能真正限制它与SecurityManager一起使用多少内存和/或CPU,这本身就是一个很大的问题。
问题是,此机制的主要用例是运行小程序,并且小程序死了 long 。因此,这是Java生态系统中目前很少有人使用的功能,并且很少使用的黑名单式机制通常到处都是漏洞。
我强烈建议您为此目的设置虚拟机。基于管理程序的限制也存在漏洞,但是“在VM中托管事物并确保它不能对底层计算机执行任务”更为常见。
,限制通过程序本身的访问是行不通的。要限制系统调用和对文件的不必要访问,您要么想创建仅具有部分权限的用户,要么创建一个单独的可执行文件,在其中通过uid限制文件系统访问并通过seccomp限制系统调用,有多种方法... >