gpt4 book ai didi

java - 在 Java 中更改系统属性 - 安全策略文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:39 26 4
gpt4 key购买 nike

我对 Java 安全模型的理解有些困惑。在我的 ${JDK_HOME}/jre/lib/security/java.policy 文件中,我可以看到以下条目:

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 显示我修改后的值,即 my.jvm.version.2345

这是否意味着 java.policy 中设置的策略不起作用,我在这里缺少什么?

最佳答案

java.policy 文件没有在正常的 java 进程中使用。您必须首先配置 java 进程以使用 SecurityManager(例如,将“-Djava.security.manager”添加到命令行)。更多详情 here .

关于java - 在 Java 中更改系统属性 - 安全策略文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com