构建特定于环境的Grails WAR文件时,其他环境中的配置也包含在WAR文件中。例如,生产环境中的所有数据库连接属性也包含在为测试构建的WAR文件中。即使将配置编译为类文件,从那里提取敏感数据也非常简单。
为了提高安全性,我想从WAR文件中排除不相关的环境配置。有没有办法在WAR构建期间自动剥离此配置,还是必须外部化这些配置并单独部署它们?
答案 0 :(得分:0)
我想如果你能以某种方式分析字节码并准确计算出哪个Config$_closure3$_closure12
对应于你不需要的那个位,那么你可以用一个空的闭包替换它,但是它可能比它的价值更麻烦。我当然不容易理解。
我会将每个env的配置放在一个单独的文件中。如果你将prod配置放在web-app / WEB-INF / classes / myapp-prod.groovy(仍然在环境块中)并将dev配置放在顶层目录中的文件中,并说
grails.config.locations = ["classpath:myapp-prod.groovy", "file:myapp-dev.groovy"]
然后只有prod配置才会在战争中结束。虽然它完全是人类可读的,但是简单地将prod配置直接保存在Config.groovy中(因此它被编译)可能更安全,只需使用外部覆盖开发模式。