Я пытаюсь выполнить сканирование безопасности HP Fortify для моего Java-приложения. У меня мало проблем, и я их исправил. Но я не могу найти решение для следующей проблемы.
Командный впрыск
String hostname = execReadToString("hostname").split("\\.")[0];
public static String execReadToString(String execCommand) throws IOException {
try (Scanner s = new Scanner(Runtime.getRuntime().exec(execCommand).getInputStream()).useDelimiter("\\A")) {
return s.hasNext() ? s.next() : "";
}
Метод execReadToString () вызывает exec () для выполнения команды. Этот вызов может позволить злоумышленнику ввести вредоносные команды.
Так что я тоже попробовал с компоновщиком процессов.
private static void gethostname(String cmd1) throws IOException {
if(Pattern.matches("[A-Za-z]+", cmd1)) {
ProcessBuilder pb = new ProcessBuilder(cmd1);
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String readline;
while ((readline = reader.readLine()) != null) {
System.out.println(readline);
}
}
}
Даже из-за этого возникает проблема безопасности Этот вызов start () может позволить злоумышленнику вводить вредоносные команды.
Что будет идеальным решением для этой проблемы?
Заранее спасибо