Java 如何使用JSR223保护脚本?
我使用Groovy作为动态脚本引擎,允许web应用程序的管理员用户创建小脚本作为接口解决方案的一部分,例如执行简单的字符串操作、标记化等。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 我可以在执行之前进行字符串检
不幸的是,这打开了一个很大的漏洞,因为默认情况下,脚本引擎将执行任何操作。
我在这里介绍了一个演示应用程序: 您可以执行
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");