2012-04-27 27 views

回答

1

一個可以覆蓋這些函數的定義和消毒這樣的腳本:

private String sanitizeScript(String script) { 
    if (containsMoreThanOneStatement(script)) { 
     throw new ScriptedPermissionsException("Scripts may only contain one statement!!"); 
    } 
    return new StringBuilder() 
      .append("function importPackage(a){ throw 'Cannot import!'};").append('\n') 
      .append("function importClass(a){ throw 'Cannot import!'};").append('\n') 
      .append("function JavaImporter(a){ throw 'I said, no importing!!'};").append('\n') 
      .append(script).append(';') 
      .toString(); 
} 

然而,這仍然需要提醒的是一個還可以做

java.lang.Class.forName('foo.bar.Zap') 
0

如果你的意圖在於限制在導入函數的調用則只是空他們當,該ScriptEngine初始化

engine.eval("importPackage = null;");