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ボックスで何が起こるかを確認するためにテストケースを作成することもできますが、他のプラットフォームでも安全であることを確認したいと思います。