Я пытаюсь выполнить сканирование безопасности hp fortify для своего Java-приложения. У меня мало проблем, и я их исправил. Но я не могу найти решение приведенной ниже проблемы.
Я пытаюсь выполнить сканирование безопасности hp fortify для своего Java-приложения. У меня мало проблем, и я их исправил. Но я не могу найти решение приведенной ниже проблемы.
[list] [*][b]Внедрение команд[/b]
[code]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() : ""; } [/code]
Метод execReadToString() вызывает exec() для выполнения команды. Этот вызов может позволить злоумышленнику внедрить вредоносные команды. [/list]
Поэтому я также попробовал использовать построитель процессов.
[code]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); } } } [/code]
Даже это вызывает у меня проблемы с безопасностью [b]Этот вызов start() может позволить злоумышленнику внедрить вредоносные команды.[/b]