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