Horis há 1 ano atrás
pai
commit
3e36fa4a8c

+ 1 - 1
modules/rhino/src/main/java/com/script/rhino/ProtectedNativeJavaClass.kt

@@ -6,7 +6,7 @@ import org.mozilla.javascript.Scriptable
 class ProtectedNativeJavaClass(
     scope: Scriptable,
     javaClass: Class<*>,
-    private val protectedName: HashSet<String>
+    private val protectedName: Set<String>
 ) : NativeJavaClass(scope, javaClass) {
 
     override fun has(

+ 8 - 2
modules/rhino/src/main/java/com/script/rhino/RhinoClassShutter.kt

@@ -34,6 +34,7 @@ import java.io.ObjectOutputStream
 import java.lang.reflect.Member
 import java.nio.file.FileSystem
 import java.nio.file.Path
+import java.util.Collections
 
 /**
  * This class prevents script access to certain sensitive classes.
@@ -94,14 +95,19 @@ object RhinoClassShutter : ClassShutter {
             "androidx.sqlite.db",
             "androidx.room",
             "cn.hutool.core.io",
+            "cn.hutool.core.lang.reflect",
             "dalvik.system",
             "java.nio.file",
+            "java.lang.reflect",
+            "java.lang.invoke",
             "io.legado.app.data.dao",
-        )
+            "com.script",
+            "org.mozilla",
+        ).let { Collections.unmodifiableSet(it) }
     }
 
     private val systemClassProtectedName by lazy {
-        hashSetOf("load", "loadLibrary", "exit")
+        Collections.unmodifiableSet(hashSetOf("load", "loadLibrary", "exit"))
     }
 
     fun visibleToScripts(obj: Any): Boolean {