kik*_*iki 11 java securitymanager
我试图禁止System.exit(int);在一些罐子里打电话.
这些罐子将由外部团队开发,并由我们的"容器"应用程序加载.
我的第一反应是使用java安全管理器:
-Djava.security.manager-Djava.security.debug=all
Run Code Online (Sandbox Code Playgroud)
用最简单的${user.home}/.java.policy文件:
grant {};
Run Code Online (Sandbox Code Playgroud)
虽然我不能再调用System.getProperties()(因为我没有java.util.PropertyPermission),我可以做一个System.exit(0)!!
该选项java.security.debug=all提供以下控制台:
scl: getPerms ProtectionDomain (file: my-bin-path <no sign certificates>)
sun.misc.Launcher $ AppClassLoader @ 10385c1
<no principals>
java.security.Permissions @ 15b7986 (
(java.lang.RuntimePermission exitVM)
(java.io.FilePermission \my-bin-path\- read)
)
Run Code Online (Sandbox Code Playgroud)
为什么my-bin-path中的所有类都已java.lang.RuntimePermission exitVM授予?????
谢谢
来自RuntimePermission的 Javadoc :
注意:“exitVM.*”权限会自动授予从应用程序类路径加载的所有代码,从而使应用程序能够自行终止。
读到这里,您似乎必须通过编写自己的 SecurityManager 来明确拒绝此权限。(例如,请参阅这个答案:Prevent System.exit to 实际上退出 JVM)
| 归档时间: |
|
| 查看次数: |
2377 次 |
| 最近记录: |