I am trying to fragment my custom applications, while keeping the total design standard.
I have recently learned compiling java applications to native exe files on windows with graalvm.
I am thinking of chaging the design from using many complex web-applications to
- make only one simple web application to serve as a https site,
- and having only one servlet having only one task "to push the link to relative native exe files", as sth like below
/**
* 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;
}
and return the outcome as reply.
Will there be any security risk that i should additionally consider. Is it safe to give a go?