JDK 17 Java安全性已弃用

w6lpcovy  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(708)

我们在项目中使用了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());
        }
cnjp1d6j

cnjp1d6j1#

这里选择了一些Java安全类,包括policy、security和SecurityManager,以便在JDK 17中删除。JDK目前没有提供这些类的直接替代品。您可以通过研究第三方安全库来解决这个问题,这些库提供了各种安全功能,例如Apache Shiro,Spring Security或OWASP Java Encoder。这些库可能提供不同的方法来实现项目中的属性权限、脚本策略安全性和其他安全管理功能。
我希望这能帮助你在你的项目中找到一些解决方案。

相关问题