Как безопасно обрабатывать чувствительные переменные среды? - PullRequest
0 голосов
/ 01 октября 2018

Я работал над приложением Java, которое принимает сценарий оболочки в качестве входного аргумента и выполняет его.Я использую следующий блок для подготовки среды:

ProcessBuilder pb = new ProcessBuilder("/bin/bash", scriptFile);
Map<String, String> env = pb.environment();

env.putAll(environmentVariable);

Process awk = pb.inheritIO().start();
awk.waitFor();
awk.destroy();

В приведенном выше блоке кода environmentVariable - это карта, которая содержит некоторые конфиденциальные данные, которые впоследствии будут использоваться сценарием.

Мое понимание ProcessBuilder#environment() заключается в том, что он обеспечивает среду только для этого подпроцесса.Изменения, которые вы делаете в этой среде, влияют только на этот подпроцесс.Я проверил это, пройдя через Javadoc ProcessBuilder#environment()

Теперь мой вопрос заключается в том, что в конце этой операции, т.е. когда будет вызван awk.destroy(), будет ли окружающая среда уничтоженасо всеми чувствительными переменными, которые я поставил, или лучше вручную стереть карту переменных среды с помощью env.remove(SENSITIVE_VARIABLE_KEY) или env.putAll(new HashMap<String, String>)

1 Ответ

0 голосов
/ 01 октября 2018

process.destroy не будет очищать систему env на ProcessBuilder.Вы все еще можете использовать тот же объект PB для запуска новых процессов, в том числе и с той же картой env.

Я не понимаю ваших требований, почему вы хотите удалить запись env.Если после процесса awk вы больше не используете объект pb и на него нет ссылок, java соберет мусор.Я не вижу, что приводит вас к удалению конфиденциальных записей с карты.В любом случае у вас есть другая переменная java environmentVariable, содержащая ваши конфиденциальные данные.

Для вашего вопроса, если вы хотите удалить некоторые данные, вы можете использовать map.remove(), если вы хотите очистить карту, вы можете сделать pb.environment().clear().Но если вы сделали это, когда вы начнете новый процесс с pb, он будет использовать измененную env-map.

...