Я думаю, что вы должны использовать ProcessBuilder, этот класс используется для создания процессов операционной системы, потому что разработчикам следует избегать вызова оболочки с использованием Runtime.exec, чтобы вызывать конкретные команды операционной системы и вместо этого использовать API Java.
Каждый экземпляр ProcessBuilder управляет набором атрибутов процесса. Метод start() создает новый экземпляр процесса с этими атрибутами. Метод start() может быть вызван повторно из одного и того же экземпляра для создания новых подпроцессов с идентичными или связанными атрибутами.
Начиная новый процесс, который использует по умолчанию рабочий каталог и окружающая среда легко:
Process p = new ProcessBuilder("myCommand", "myArg").start();
Вот пример, который запускает процесс с модифицированной рабочей директории и окружающей среды, и перенаправляет стандартный вывод и ошибки быть прилагается к файлу журнала:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
File log = new File("log");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
Помните, что поддерживается с java 5 и далее, и Class не синхронизирован.
Проверить Links--
Source Doc
Code Samples
Как только вы выполните команду System, угроза здесь. Независимо от того, какой API вы используете – yunandtidus
Я прочитал в вики Owasp, что инъекция команды всегда является угрозой безопасности. Для справки см. [Ввод команд в Java] (https://www.owasp.org/index.php/Command_injection_in_Java) – dasrohith
Этот вопрос может быть слишком широким для ответа, потому что слишком мало контекста. – SpaceTrucker