根据安全策略创建Java沙箱
问题内容:
我需要创建环境来运行可能不受信任的代码。程序允许连接到预配置的地址:端口,而无其他要求(甚至读取系统时间)。我已经编译了班白名单。我搜索了类似的问题,但仅找到基于不推荐使用AFAIK的SecurityManager的模板。有人可以给我一个简单的示例,如何基于安全策略和AccessController在沙箱中运行代码吗?
问题答案:
据我所知,仍然是运行安全检查的SecurityManager。但是现在看来,它委托给了AccessController。
首先,您需要打开安全管理器:
-Djava.security.manager
如果您忽略此参数,则不会有沙箱。
其次,您需要告诉在哪里可以找到策略文件:
-Djava.security.policy =
这会将您的权限添加到Java主目录中已定义的权限中。原始沙箱规则位于… / jre / lib / security /
java.policy中。但是,如果您希望自己的策略是唯一的策略,则需要使用双引号“ =”。这样,您可以完全控制允许的内容。
例如:
-Djava.security.policy ==
我建议您使用Java随附的“ policytool”。这是相当基础的,但是它可以帮助您使用正确的语法快速编写策略文件。
我希望这有帮助…