代码之家  ›  专栏  ›  技术社区  ›  FrantiÅ¡ek Jeřábek

Java Rhino允许从安全上下文访问Java

  •  1
  • FrantiÅ¡ek Jeřábek  · 技术社区  · 6 年前

    我想创建沙盒javascript环境,并限制对java类的所有访问,但我指定的类除外。我试图通过创造 Context 使用 Context.initSafeStandardObjects()

    有没有办法允许javascript使用其他类? 如果我创建上下文 Context.initStandardObjects()

    我可以访问所有我不想要的java类。

    1 回复  |  直到 6 年前
        1
  •  1
  •   FrantiÅ¡ek Jeřábek    6 年前

    我找到了解决办法。您可以使用以下方法将java类的实例添加到javascript中:

    Object wrappedTest = Context.javaToJS(test, scope);
    ScriptableObject.putProperty(scope, "test", wrappedTest); //Where text here is name of the variable
    

    这样,您就可以在javascript中使用此类方法,即使u init上下文使用 initSafeStandardObjects

    Object result = cx.evaluateString(scope, "test.sampleMethod()", "<cmd>",1, null);
    System.out.println(cx.toString(result));