2016-09-29 60 views
1

使用類型安全配置也都可以進行變量替換和鍵和值的徹底壓倒一切:限制變量替換的類型安全配置

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),這些數據庫URL將會有所不同。

但是,如果潛在黑客以惡意配置重新啓動應用程序,則徹底覆蓋任何內容的能力都會帶來安全風險。

是否可以允許變量替換但抑制總重寫???

回答

0

你可以看一下通過命令行提供ConfigFactory.defaultOverrides()的覆蓋,並檢查它不包含任何調用ConfigFactory.load()之前禁止的。

另一種選擇是使用ConfigFactory.load(String resourceBasename)自己構建Config對象,而不是將命令行覆蓋合併到它中。