0

在构建特定环境的 Grails WAR 文件时,来自其他环境的配置也包含在 WAR 文件中。例如,生产环境中的所有数据库连接属性也包含在为测试而构建的 WAR 文件中。即使配置被编译为类文件,从那里提取敏感数据也很简单。

为了提高安全性,我想从 WAR 文件中排除不相关的环境配置。有没有办法在 WAR 构建期间自动剥离此配置,或者我必须将这些配置外部化并单独部署它们?

4

1 回答 1

0

我想如果你能以某种方式分析字节码并精确计算出Config$_closure3$_closure12与你不需要的位相对应的位,那么你也许可以在战争中用一个空的闭包来替换它,但这可能比它的价值更麻烦。我知道肯定没有简单的方法。

我会将每个环境的配置放在一个单独的文件中。如果您将 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 中(因此它被编译)并使用外部覆盖开发模式可能更安全。

于 2013-02-13T10:19:08.980 回答