我是java新手,是一个自学成才的人。我遇到了以下问题,陷入了困境。事实上,我正试图针对命令注入来净化这段代码,但没能理解如何。我知道如何净化用户输入,但这与操作系统中执行的命令有关,我不知道有人能帮我什么忙。这是代码:
public class CommandProcessor {
public CommandProcessor() {
// TODO Auto-generated constructor stub
}
public int invokeCommand(String command) throws IOException{
int exitCode =0;
if(command !=null && !command.isEmpty()) {
Process process = null;
try {
process = Runtime.getRuntime().exec(command);
process.waitFor();
exitCode = process.exitValue();
}catch(InterruptedException e) {
}
}
return exitCode;
}
}
正确的答案是阅读文档,因为您当前的代码不安全。
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Runtime.html#exec(java.lang.String%5B%5D(
";命令执行";应该是一个常数。