使用类型安全配置,既可以执行变量替换,也可以直接覆盖键和值:
config {
substitution.required = ${VAR}
should.not.override = "should not be overridden"
}
java -jar executable.jar -Dconfig.should.not.override="This is a security risk"
进行变量替换的能力允许我将应该外部化的配置外部化,例如数据库 URL,这将根据部署环境(staging、qa、prod)而有所不同。
但是,如果潜在的黑客使用恶意配置重新启动应用程序,那么彻底覆盖任何内容的能力都会带来安全风险。
是否可以允许变量替换但抑制完全覆盖???