java - 如何使用 JSR 223 保护脚本安全?

标签 java security groovy scriptengine jsr223

我使用 Groovy 作为动态脚本引擎,允许我的 Web 应用程序的管理员用户创建小脚本作为界面解决方案的一部分,例如。进行简单的字符串操作,标记化等。
不幸的是,这打开了一个相当大的漏洞,因为默认情况下脚本引擎会执行任何内容。
我在这里描述了一个演示应用程序:http://javadude.wordpress.com/2011/06/29/creating-a-zk-groovy-console/

Object value = shell.evaluate("whatever groovy script");

您可以执行 System.exit(0) 来关闭 AS,甚至可以执行 shell 命令,例如 "ls -l".execute().text 或只是监听围绕系统设置 println InetAddress.localHost.hostAddress

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

最佳答案

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

有一个blog post这里解释了更多。

您还应该阅读:

关于java - 如何使用 JSR 223 保护脚本安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622259/

相关文章:

performance - Groovy shell 启动速度慢得可怕

groovy - Groovy 中的函数式编程;除了 curry 方法 :?

java - 通信链路故障,本地主机上的 MySQL 数据库未连接

java - 当 spring-boot 运行时 IntelliJ 进程以退出代码 0 完成

java - 如何在 Gomoku javafx 游戏中启用轮流

.net - .net core 和 .net framework 的区别漏洞

java - 使用 CipherOutputStream + AES 将字符串写入文件

java - Eclipse Web 应用程序启动时出现严重错误

security - 我应该重用OAuth 2.0访问 token 吗?

eclipse - 如何在 Groovy 控制台(GroovyStarter)和 GGTS/Eclipse 控制台中输出和显示 Unicode