static

in src/main/java/com/ql/util/express/config/QLExpressRunStrategy.java [64:97]


    static {
        // 系统退出
        SECURITY_RISK_METHOD_LIST.add(System.class.getName() + "." + "exit");

        // 运行脚本命令
        SECURITY_RISK_METHOD_LIST.add(Runtime.getRuntime().getClass().getName() + ".exec");
        SECURITY_RISK_METHOD_LIST.add(ProcessBuilder.class.getName() + ".start");

        // 反射相关
        SECURITY_RISK_METHOD_LIST.add(Method.class.getName() + ".invoke");
        SECURITY_RISK_METHOD_LIST.add(Class.class.getName() + ".forName");
        SECURITY_RISK_METHOD_LIST.add(ClassLoader.class.getName() + ".loadClass");
        SECURITY_RISK_METHOD_LIST.add(ClassLoader.class.getName() + ".findClass");
        SECURITY_RISK_METHOD_LIST.add(ClassLoader.class.getName() + ".defineClass");
        SECURITY_RISK_METHOD_LIST.add(ClassLoader.class.getName() + ".getSystemClassLoader");

        // jndi 相关
        SECURITY_RISK_METHOD_LIST.add("javax.naming.InitialContext.lookup");
        SECURITY_RISK_METHOD_LIST.add("com.sun.rowset.JdbcRowSetImpl.setDataSourceName");
        SECURITY_RISK_METHOD_LIST.add("com.sun.rowset.JdbcRowSetImpl.setAutoCommit");

        SECURITY_RISK_METHOD_LIST.add("jdk.jshell.JShell.create");
        SECURITY_RISK_METHOD_LIST.add("javax.script.ScriptEngineManager.getEngineByName");
        SECURITY_RISK_METHOD_LIST.add("org.springframework.jndi.JndiLocatorDelegate.lookup");

        // QLE QLExpressRunStrategy的所有方法
        for (Method method : QLExpressRunStrategy.class.getMethods()) {
            SECURITY_RISK_METHOD_LIST.add(QLExpressRunStrategy.class.getName() + "." + method.getName());
        }
        addRiskSecureConstructor(java.lang.ProcessBuilder.class);
        addRiskSecureConstructor(java.net.Socket.class);
        addRiskSecureConstructor(java.awt.Desktop.class);
        addRiskSecureConstructor(java.util.PropertyResourceBundle.class);
    }