根据安全策略创建java沙箱

gor*_*uad 16 java sandbox

我需要创建环境来运行可能不受信任的代码.程序允许连接到预先配置的地址:端口,没有别的(甚至读取系统时间).我编译了类白名单.我搜索过类似的问题,但只找到了基于SecurityManager的模板,其中AFAIK已被弃用.任何人都可以给我一个简单的示例,了解如何基于安全策略和AccessController在沙箱中运行代码?

Jan*_*rts 16

据我所知,它仍然是运行安全检查的SecurityManager.但它似乎现在委托给AccessController.

首先,您需要打开安全管理器:

-Djava.security.manager

如果你省略这个论点,就没有任何沙盒.

其次,您需要告诉在哪里找到策略文件:

-Djava.security.policy =

这会将您的权限添加到已在Java主目录中定义的权限.原始沙箱规则在.../jre/lib/security/java.policy中.但是,如果您希望自己的政策成为唯一一个需要使用双"="的政策.这样你就可以完全控制允许的内容.

例如:

-Djava.security.policy ==

我建议你使用Java附带的"policytool".它是相当基础的,但它可以帮助您使用正确的语法快速编写策略文件.

我希望这有帮助...