Недавно я научился компилировать Java-приложения в собственные exe-файлы в Windows с помощью graalvm.
Я подумываю изменить дизайн и отказаться от использования множества сложных веб-приложений, чтобы
- сделать только одно простое веб-приложение, которое будет служить https-сайтом,
- и иметь только один сервлет, выполняющий только одну задачу «передать ссылку на соответствующие собственные exe-файлы», как показано ниже
Код: Выделить всё
/**
* for example url = "https://www.webpage.com/app-one/someNativeApplicationName?param1=value1¶m2=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