限制java、C++、python程序的权限 假设我必须在我的机器上运行java、C++或Python 3.8程序,但是我不想这些程序访问我的系统信息,运行OS命令,或者执行任何恶意活动。上述每种语言都有这样做的方法吗?

限制java、C++、python程序的权限 假设我必须在我的机器上运行java、C++或Python 3.8程序,但是我不想这些程序访问我的系统信息,运行OS命令,或者执行任何恶意活动。上述每种语言都有这样做的方法吗?,java,python,c++,security,Java,Python,C++,Security,通过程序本身限制访问是行不通的。要限制系统调用和对文件的不必要访问,您可以创建一个只有部分权限的用户,或者创建一个单独的可执行文件,在其中通过UID限制文件系统访问并通过seccomp限制系统调用,有多种方法可以做到这一点。Java理论上有一个解决方案:“SecurityManager”。您可以在java代码中设置一个,您可以告诉系统:下面是一些代码;请以经理的身份加载 securitymanager在某些事情发生之前被调用,并且可以拒绝该操作。它主要是任何感觉安全敏感的东西: 退出虚拟机 打开

通过程序本身限制访问是行不通的。要限制系统调用和对文件的不必要访问,您可以创建一个只有部分权限的用户,或者创建一个单独的可执行文件,在其中通过UID限制文件系统访问并通过seccomp限制系统调用,有多种方法可以做到这一点。

Java理论上有一个解决方案:“SecurityManager”。您可以在java代码中设置一个,您可以告诉系统:下面是一些代码;请以经理的身份加载

securitymanager在某些事情发生之前被调用,并且可以拒绝该操作。它主要是任何感觉安全敏感的东西:

退出虚拟机 打开任何文件 打开任何网络连接 设置安全管理器 访问剪贴板 印刷品 会影响线程加载的某些方面 您可以告诉java运行您编写的某个类文件,该类文件设置了一个安全管理器,然后将运行您想要限制的应用程序

请注意,您不能真正限制SecurityManager使用多少内存和/或CPU,这本身可能是一个相当大的问题

问题是,这种机制的主要用例是运行小程序,而小程序早已过时。因此,这是java生态系统中目前很少有人使用的特性,很少使用的黑名单式机制通常都有漏洞


我强烈建议您为此目的设置一个虚拟机。基于虚拟机监控程序的限制也存在漏洞,但是“在虚拟机中托管东西并确保它不能对底层机器执行操作”更为常见。

限制用于运行进程的用户?应用程序涉及客户端创建自己的代码并通过rest api在我的机器上运行。您允许用户在您的机器上运行任意代码吗?这是一个可怕的想法。没有什么可以保护你免受足够先进的恶意软件的攻击。技术上不是恶意软件的代码仍然会耗尽系统的资源。请注意,询问如何用三种不同的编程语言缓解威胁注定问题过于广泛。询问一种语言,最好将问题进一步缩小到针对特定类别的恶意软件。你能告诉我如何实现这一点的资源吗?我使用的是ubuntu 18.04操作系统。如果我有一个客户端可以输入自己的代码并运行程序,那么在这种情况下,有一种方法可以限制他们对系统的访问?这就是用户的全部观点,我认为SecurityManager将适用于我的应用程序。你知道C++和python的等价物吗?