我们在项目中使用了Java安全类,在JDK 17中,这些安全类被标记为删除。这些类的替代方案是什么。我们在项目中使用以下类和方法来实现脚本策略安全性。
Security.setProperty(),
Policy.setPolicy(new ScriptPolicy(getClass().getClassLoader()));,
System.setSecurityManager(new SecurityManager());
政策如
_groovyPermissions.add(new PropertyPermission("java.version", "read"));
_groovyPermissions.add(new PropertyPermission("java.vm.name", "read"));
_groovyPermissions.add(new PropertyPermission("groovy.*", "read"));
根据JDK 17迁移“https://docs.oracle.com/en/java/javase/17/migrate/migrating-jdk-8-later-jdk-releases.html#GUID-7DACC239-E71D-4B89-B582-201EA7CEBC38”
目前还没有其他选择。
public class ScriptPolicy extends Policy
and
From this method, we are getting permissions.
protected void _addStaticPermissions()
{
_groovyPermissions.add(new PropertyPermission("java.version", "read"));
_groovyPermissions.add(new PropertyPermission("java.vm.name", "read"));
_groovyPermissions.add(new PropertyPermission("groovy.*", "read"));
}
This is the code where we assign the permissions to Policy.
if (System.getSecurityManager() == null) {
String restricted = Security.getProperty("package.access");
Security.setProperty("package.access",
restricted + "com.xyz");
Policy.setPolicy(new ScriptPolicy(getClass().getClassLoader()));
System.setSecurityManager(new SecurityManager());
}
1条答案
按热度按时间cnjp1d6j1#
这里选择了一些Java安全类,包括policy、security和SecurityManager,以便在JDK 17中删除。JDK目前没有提供这些类的直接替代品。您可以通过研究第三方安全库来解决这个问题,这些库提供了各种安全功能,例如Apache Shiro,Spring Security或OWASP Java Encoder。这些库可能提供不同的方法来实现项目中的属性权限、脚本策略安全性和其他安全管理功能。
我希望这能帮助你在你的项目中找到一些解决方案。