2016-09-29 14 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-адреса базы данных, которые будут отличаться в зависимости от среды развертывания (этап, qa, prod).

Однако возможность прямого преодоления чего-либо является угрозой безопасности, если потенциальный хакер запустит приложение с гнусной конфигурацией.

Возможно ли разрешить переменную замену, но подавить полное переопределение?

ответ

0

Вы можете посмотреть переопределения, предоставленные через командную строку, ConfigFactory.defaultOverrides() и убедиться, что перед вызовом ConfigFactory.load() он не содержит ничего запрещенного.

Другой вариант - создать объект Config самостоятельно с помощью ConfigFactory.load(String resourceBasename) и не слить в него переопределения командной строки.