Attualmente sto sviluppando un MVP (app mobile finanziaria) e sto cercando di capire i modi migliori per impedire l'interazione dei client non autorizzati con il server.
Guardando la sicurezza della maggior parte delle app mobili, posso vedere che è abbastanza facile fare un attacco MITM su questi per intercettare la comunicazione su SSL.
Alcune app sembrano prevenirle con il blocco dei certificati ma è anche molto facile da superare su un telefono jailbroken.
(Vedo che in questo thread I certificati client forniscono protezione contro MITM? è possibile che il server verifichi il client - ma in pratica sembra che praticamente nessuno lo faccia? - non è sicuro del perché ed è forse causa di una certa inflessibilità nel fissare un certificato client sul server? )
Posso vedere che un paio delle app più sicure che ho visto, implementare il blocco dei certificati sul client, il server poi invia una chiave pubblica (?) aggiuntiva (che posso vedere nel proxy di charles) quindi molto probabilmente una secondo scambio di chiavi pubblico-privato, ma dopo non riesco più a tenere traccia delle comunicazioni. (in origine questa app come molte altre app finanziarie sembra fare sicurezza out-of-band via sms).
In breve: 1) Quali sono le opzioni di sicurezza aggiuntive disponibili per proteggere la mia app che vanno oltre il blocco dei certificati sul client (e impediscono ai client non autorizzati di accedere al server?) (Escluso il jailbreaking prevention).
2) In che modo le band out-of-type funzionano, e in che modo questo fornisce una protezione aggiuntiva?
Grazie