基于安全策略创建 Java 沙盒
我需要创建环境来运行可能不受信任的代码。程序允许连接到预配置的地址:端口,没有其他东西(甚至读取系统时间)。我已经编译了类白名单。我搜索了类似的问题,但只找到了基于AFAIK弃用的SecurityManager的模板。任何人都可以给我一个简单的示例,如何基于安全策略和AccessController在沙盒中运行代码?
我需要创建环境来运行可能不受信任的代码。程序允许连接到预配置的地址:端口,没有其他东西(甚至读取系统时间)。我已经编译了类白名单。我搜索了类似的问题,但只找到了基于AFAIK弃用的SecurityManager的模板。任何人都可以给我一个简单的示例,如何基于安全策略和AccessController在沙盒中运行代码?
据我所知,运行安全检查的仍然是SecurityManager。但现在它似乎委托给AccessController。
首先,您需要打开安全管理器:
-Djava.security.manager
如果你省略这个参数,就不会有任何沙箱。
其次,您需要告诉在哪里可以找到策略文件:
-Djava.security.policy=
这会将您的权限添加到 Java 主页中已定义的权限。.../jre/lib/security/java.policy 中的原始沙盒规则。但是,如果您希望您的策略是唯一的策略,则需要使用双精度“=”。通过这种方式,您可以完全控制允许的内容。
例如:
-Djava.security.policy==
我建议您使用Java附带的“policytool”。这是相当基本的,但它可以帮助您使用正确的语法快速编写策略文件。
我希望这有帮助...