命令注入 Java

Command Injection In Java

我是java的新人,自学。我遇到了以下问题并被卡住了。事实上,我正试图针对命令注入清理此代码,但未能理解如何操作。我知道如何清理用户输入,但这具体与 OS 中执行的命令有关,我不确定有人会如何提供帮助。这是代码:

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)

“要执行的命令”应该是一个常量。