Я хочу использовать библиотеку Java org.apache.commons.exec
для вызова исполняемого файла.Защищает ли объект CommandLine
от ввода в командной строке?Например, если я позвоню:
String singleStringArgument = "-whatever;rm -rf ~/*"; // evil looking argument!
CommandLine cl = new CommandLine(new File(pathToExe,exeName));
cl.addArgument(singleStringArgument); // oh no!
Executor exe = new DefaultExecutor();
exe.execute(cl);
, будет ли rm -rf ~/*
работать в дополнение к предполагаемой команде?Если да, то как лучше всего защититься от этого?
API говорит addArgument()
"обрабатывает цитирование", но я не уверен, что это означает в этом контексте.Я мог бы создать тестовый сценарий, чтобы увидеть, что происходит на моем компьютере с Linux, но я хочу быть уверен, что это безопасно и на других платформах.