java - Java 安全管理器(奇怪的行为)
问题描述
我正在Java Security Manager
一个简单的 java 应用程序中进行测试。
我写属性"user.home"
, "user.info"
。
我读了属性"user.home"
,"user.info"
。
"user.home"
我设置了一个允许在,上读/写的策略文件"user.info"
。
我开始一个Security Manager
我应该仍然能够 read/write "user.home"
,"user.info"
因为策略文件提供了权限。
但我得到一个安全例外。
怎么了?
我的Java代码是:
import java.security.AccessControlException;
public class TestSecurityManager {
final static String securityPolicyFile = "properties_permissions.policy";
public static void main(String[] args) {
System.setProperty("user.info", "123456");
System.out.println("user.info is : " + System.getProperty("user.info"));
// Enable the security manager
try {
System.out.println("***");
System.out.println("Setting policy file");
System.out.println("***");
System.setProperty(securityPolicyFile, securityPolicyFile);
System.out.println("***");
System.out
.println("Security manager is STILL disabled, "
+ "read/write access to \"user.info\" system property "
+ "is allowed"
);
System.out.println("***");
System.setProperty("user.info", "123456");
System.out.println("user.info is : " + System.getProperty("user.info"));
//
System.out.println("***");
System.out.println("Setting Security manager");
System.out.println("***");
SecurityManager securityManager = new SecurityManager();
System.setSecurityManager(securityManager);
} catch (SecurityException se) {
try {
System.setProperty("user.info", "123456");
} catch (AccessControlException acew) {
System.out.println("!!!Write access to the user.info system property is not allowed!");
}
try {
System.out.println("user.info is : " + System.getProperty("user.info"));
} catch (AccessControlException acer) {
System.out.println("Read access to the user.info system property is not allowed!");
}
}
}
我的政策文件:
grant {
permission java.util.PropertyPermission "user.home", "read";
permission java.util.PropertyPermission "user.info", "write";
};
xxx
解决方案
您没有正确设置安全策略系统属性。它应该是:
System.setProperty("java.security.policy", securityPolicyFile);
如果设置后仍然无法正常工作,请使用标志打开调试-Djava.security.debug=policy
并检查文件是否被正确读取。你应该看到这样的一行:
策略:读取文件:/path/to/your/properties_permissions.policy
推荐阅读
- python - 我过滤素数的功能是打印重复项,我该如何解决?
- html - has-popup="true" on
- 还是?
- angular - 使用 For 循环的 Angular Firebase 复选框
- html - 为什么在我的 div 元素之前有一个随机间隙?
- python-3.x - 如何在其中一个子图中绘制箭头?
- css - 如何在 LWC 系统中包含全局样式
- python - 每次运行时分类报告都会发生变化
- arrays - 如何在二维数组的范围内使用 flatMap() 和 reduce()
- excel - 从数据透视表命名 showdetail 工作表时嵌套 For Loop 出牙问题
- python - Python opencv +烧瓶,VideoCamera打开但不显示视频源