Attualmente ho un'applicazione desktop che richiede all'utente di avere un nome utente e una password. Queste credenziali sono memorizzate su un server web (myserver.com), quindi quando digita il nome utente e la password e fa clic sul pulsante Login, vengono inviati al server web. Se le credenziali sono corrette, il server restituirà "ok", alcune informazioni utente e verrà visualizzato il modulo principale. In caso contrario, il server restituirà "sbagliato" e verrà visualizzato un avviso. Tuttavia, questo è molto insicuro, perché un utente può semplicemente modificare il file hosts, reindirizzare myserver.com al suo localhost, che restituisce sempre "ok", ed evitare la schermata di login. Mi è stato detto di generare un paio di chiavi RSA e quindi di crittografare un "nonce" (un numero casuale) nell'app desktop e inviarlo insieme alle credenziali. Se il server può restituire il numero decrittografato, ciò significherebbe che è in realtà il mio server. Devo dire che il server web è ospitato in Heroku, quindi HTTPS è abilitato di default, ma non ho alcun certificato SSL di sorta. Questo sembra essere abbastanza buono, ma questo è incline ad un attacco man-in-the-middle? Un utente malintenzionato potrebbe semplicemente reindirizzare myserver.com al suo localhost, inviare la richiesta da localhost, ricevere il numero decrittografato, cambiare "errato" in "ok" (o modificare alcune informazioni utente) e inviarlo nuovamente all'app.
Come posso creare un modulo di accesso più sicuro per un'app desktop?