【问题标题】:Restrict variable substitution in typesafe config限制类型安全配置中的变量替换
【发布时间】:2017-02-07 16:12:27
【问题描述】:

使用类型安全配置,既可以执行变量替换,也可以直接覆盖键和值:

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)而有所不同。

但是,如果潜在的黑客使用恶意配置重新启动应用程序,那么彻底覆盖任何内容的能力会带来安全风险。

是否可以允许变量替换但禁止完全覆盖???

【问题讨论】:

    标签: security overriding string-substitution typesafe-config


    【解决方案1】:

    您可以使用ConfigFactory.defaultOverrides() 查看通过命令行提供的覆盖,并在调用ConfigFactory.load() 之前检查它是否包含任何禁止的内容。

    另一种选择是使用ConfigFactory.load(String resourceBasename) 自己构建一个配置对象,而不是将命令行覆盖合并到其中。

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多