#java #shell #unix
#java #оболочка #unix
Вопрос:
Ниже приведены фрагменты кодов,
String Password = enigma.decrypt(propFile.getProperty("Password"));
String ptr_sec = presto_cli_path "/presto --server " presto_https_server " --keystore-path " keystore_path " --keystore-password " keystore_password " --catalog " presto_catalog " --schema " presto_schema " --user " presto_user " -f " queryFile " --output-format " outputFromat " --password " Password;
Process p_sec = Runtime.getRuntime().exec(new String[] { "bash", "-c", ptr_sec });
Приведенный выше код доступен в JAVA JAR. Во время выполнения процесса и при использовании grep
ps -ef|grep criskrep|grep presto
он показывает полную строку, которая также содержит пароль.
Пожалуйста, помогите преодолеть эту проблему.
Комментарии:
1. Итак, вы хотите скрыть пароль в своей оболочке, но не в Java?
2. в Java я его не печатаю. связана ли эта проблема с самим исходным кодом Java? Есть ли какое-то отношение к опции «-c»?
3. Командная строка процессов, запущенных в POSIX-подобных системах, является общедоступной. Не помещайте туда якобы секретную информацию. Найдите способ передать секретную информацию каким-либо другим способом (например, переменные среды или файлы с соответствующими разрешениями).
4. : ( есть ли какой-нибудь другой способ решить эту проблему? например, поместить детали в файл после создания строки и выполнить файл из метода «exec»?
5. Вы можете зашифровать его с помощью какого-нибудь программного обеспечения для шифрования и сохранить это зашифрованное значение в jar. Затем вы расшифровываете его в коде, прежде чем он вам понадобится. Не идеально, но это скроет пароль от a
grep
.