在构建特定于环境的Grails WAR文件时,来自其他环境的配置也包含在WAR文件中。例如,生产环境中的所有数据库连接属性也包含在为测试而构建的WAR文件中。即使配置被编译成类文件,从其中提取敏感数据也非常简单。
为了提高安全性,我希望从WAR文件中排除不相关的环境配置。有没有办法在WAR构建期间自动剥离这个配置,或者我必须外部化这些配置并单独部署它们?
发布于 2013-02-13 18:19:09
我想,如果你能以某种方式分析字节码,并精确地找出哪个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中(这样它就会被编译),并使用外部来覆盖开发模式,可能会更安全。
https://stackoverflow.com/questions/14850827
复制相似问题