Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JSR223保护脚本?_Java_Security_Groovy_Scriptengine_Jsr223 - Fatal编程技术网

Java 如何使用JSR223保护脚本?

Java 如何使用JSR223保护脚本?,java,security,groovy,scriptengine,jsr223,Java,Security,Groovy,Scriptengine,Jsr223,我使用Groovy作为动态脚本引擎,允许web应用程序的管理员用户创建小脚本作为接口解决方案的一部分,例如执行简单的字符串操作、标记化等。 不幸的是,这打开了一个很大的漏洞,因为默认情况下,脚本引擎将执行任何操作。 我在这里介绍了一个演示应用程序: 您可以执行System.exit(0),关闭AS甚至shell命令,如“ls-l”.execute().text,或者只是在系统设置中窥探println InetAddress.localHost.hostAddress 我可以在执行之前进行字符串检

我使用Groovy作为动态脚本引擎,允许web应用程序的管理员用户创建小脚本作为接口解决方案的一部分,例如执行简单的字符串操作、标记化等。
不幸的是,这打开了一个很大的漏洞,因为默认情况下,脚本引擎将执行任何操作。
我在这里介绍了一个演示应用程序:

您可以执行
System.exit(0)
,关闭AS甚至shell命令,如
“ls-l”.execute().text
,或者只是在系统设置中窥探
println InetAddress.localHost.hostAddress

我可以在执行之前进行字符串检查,比如过滤
System.xyz
execute.xyz

有经验或食谱吗

谢谢

Sven使用groovy 1.8,您可以自定义编译器配置

这里有一篇博文解释了更多内容:


您应该阅读,也可以在
Object value = shell.evaluate("whatever groovy script");