JavaScript引擎的安全问题

10

我刚开始使用Java ScriptEngine扩展我的应用程序,然后发现我可以在脚本中导入所有的java类并且无限制地使用它们。有没有一种方法可以指定脚本可以使用哪些类?我不希望它们像java.lang.System.exit(1);那样执行操作。

3个回答

2

嗯,看起来你需要学习Java SecurityManager。这是一个相当大的话题,你可能需要先了解一下它,如果你在使用它时遇到麻烦,可以提出更具体的问题。


1
SecurityManager听起来不错,我会去看看。你有什么提示可以给我在这个大主题上开始吗? - lucidd
SecurityManager 已经在 Java 17 中被弃用了(https://openjdk.org/jeps/411)。我们该怎么办? - Daniel Darabos

1

使用Java安全管理器。请参考this答案中的示例。


1
我通过在所有脚本顶部添加"importPackage = null"来解决了这个问题,看起来它可以工作,但我不确定是否可以避免这种hack。

看起来这是限制所有importPackage调用的最简单方法。 - webber
1
在这种情况下,仍然可以像这样做:java.lang.System.exit(1);。程序将退出。 - Клаус Шварц

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接