- Внедрение команд
Метод execReadToString() вызывает exec() для выполнения команды. Этот вызов может позволить злоумышленнику внедрить вредоносные команды.Код: Выделить всё
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() : ""; }
Код: Выделить всё
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);
}
}
}
Каким будет идеальным решением этой проблемы?
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/501 ... -injection