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