gpt4 book ai didi

java - 在 Java 脚本中禁用 importPackage、importClass 和 JavaImporter

转载 作者:行者123 更新时间:2023-11-30 11:45:23 26 4
gpt4 key购买 nike

是否可以禁用将内容从类路径导入到 Java 脚本 API 中的脚本的功能?目标是在脚本运行时让脚本编写者只能访问引擎绑定(bind)中的内容。在某些情况下,将随机类导入脚本可能是一个安全问题。

最佳答案

可以像这样覆盖这些函数的定义并清理脚本:

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')

关于java - 在 Java 脚本中禁用 importPackage、importClass 和 JavaImporter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com