Каковы риски безопасности при обнародовании команды java.lang.Runtime.exec (строковая команда)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Каковы риски безопасности при обнародовании команды java.lang.Runtime.exec (строковая команда)

Сообщение Anonymous »

Я пытаюсь фрагментировать свои пользовательские приложения, сохраняя при этом общий стандарт проектирования.

Недавно я научился компилировать Java-приложения в собственные exe-файлы в Windows с помощью graalvm.
Я подумываю изменить дизайн и отказаться от использования множества сложных веб-приложений, чтобы
  • сделать только одно простое веб-приложение, которое будет служить https-сайтом,
  • и иметь только один сервлет, выполняющий только одну задачу «передать ссылку на соответствующие собственные exe-файлы», как показано ниже

Код: Выделить всё

     /**
* for example url = "https://www.webpage.com/app-one/someNativeApplicationName?param1=value1&param2=value2...";
* url params is ascii or base64
*/
public String callNativeApplication(String url) {//
//CONSTRUCT nativeApplicationFile
String someNativeApplicationName = parseNativeApplicationNameFromUrl(url);
Path nativeApplicationsFolder = Path.of("C:\\nativeApplicationsFolder");
Path nativeApplicationFile = nativeApplicationsFolder.resolve(someNativeApplicationName);

//CHECK FOR DIR HACK
nativeApplicationFile = nativeApplicationFile.toAbsolutePath();
if(!nativeApplicationFile.startsWith(nativeApplicationsFolder)) {
throw new RuntimeException("ERROR: DIR HACK");
}

//CHECK HIDDEN COMMAND HACK
if (url.chars().filter(ch -> ch == ' ').count() != 0) {
throw new RuntimeException("ERROR: HIDDEN COMMAND HACK");
}

//CONSTRUCT command
String command = nativeApplicationFile + " " + url;

//CHECK HIDDEN CHAR HACK
if (!Charset.forName("US-ASCII").newEncoder().canEncode(command)){
throw new RuntimeException("ERROR: HIDDEN CHAR HACK");
}

//EXECUTE
Process p = java.lang.Runtime.getRuntime().exec(command);
String reply = fetchReply(p);
return reply;
}
и верните результат в виде ответа.
Существует ли какая-либо угроза безопасности, которую мне следует дополнительно учитывать. Безопасно ли начинать?

Подробнее здесь: https://stackoverflow.com/questions/768 ... ntime-exec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»