Quando un'app Flutter esce dalla fase di sviluppo ed entra in produzione, il codice compilato e il traffico di rete diventano superfici d'attacco reali: il binario può essere decompilato per estrarre endpoint, chiavi e logica di business, mentre il traffico HTTPS può essere intercettato da un proxy MITM con una CA installata sul dispositivo (scenario banale su device rooted, emulatori o reti aziendali).
In questo tutorial affrontiamo due contromisure complementari e spesso richieste dagli audit di sicurezza:
- Code obfuscation dell'AOT snapshot Dart, con gestione corretta dei file di simboli per poter comunque leggere gli stack trace di produzione.
- Certificate pinning basato su hash SHA-256 della SubjectPublicKeyInfo (SPKI), implementato correttamente con Dio (attenzione:
badCertificateCallbacknon basta) e con strategia di rotazione dei pin.
Prerequisiti: familiarità con build release Android/iOS, Gradle,
dio, e nozioni base di TLS/X.509. Il tutorial presuppone Flutter 3.x e Dio 5.x.
Alla fine avrai una pipeline di build hardenizzata, un client HTTP che rifiuta qualunque certificato non pinnato e una procedura di verifica con mitmproxy.