我想使用org.apache.commons.exec
Java 库来调用可执行文件。该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 机器上会发生什么,但我想确保它在其他平台上也是安全的。