如何解决更改Java中的系统属性-安全策略文件
| 我在理解Java安全模型时有些困惑。在我的“ 0”文件中,我可以看到以下条目:grant {
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify,because Thread.stop() is potentially unsafe.
// See \"http://java.sun.com/notes\" for more information.
permission java.lang.RuntimePermission \"stopThread\";
// allows anyone to listen on un-privileged ports
permission java.net.SocketPermission \"localhost:1024-\",\"listen\";
// \"standard\" properies that can be read by anyone
permission java.util.PropertyPermission \"java.vm.version\",\"read\";
..... .....
最后一行显示为:permission java.util.PropertyPermission \"java.vm.version\",\"read\";
我将其解释为:在VM中运行的Java程序具有读取属性'java.vm.version \'的权限。
理解后,我编写了一个示例程序只是为了检查,如果我遇到任何运行时错误,如果我更改此属性:
System.setProperty(\"java.vm.version\",\"my.jvm.version.2345\");
System.out.println(System.getProperty(\"java.vm.version\"));
没有错误。而是由System.out.println
显示我的修改值,即value5ѭ
这是否意味着在ѭ6中设置的策略无法正常工作,我在这里遗漏了什么?
解决方法
在正常的Java进程中不使用java.policy文件。您必须首先将Java进程配置为使用SecurityManager(例如,在命令行中添加\“-Djava.security.manager \”)。此处有更多详细信息。
,不要浪费时间弄乱策略文件。对于程序员来说,它们很难做到正确,对于最终用户而言几乎是不可能的。
如果是应用程序。需要信任,对其进行数字签名,并在出现提示时说服用户信任代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。