Le app mobili sono frequenti bersagli di attacchi. Dati sensibili, pagamenti, informazioni personali, tutto ha bisogno di protezione. Questa guida presenta le pratiche essenziali per la sicurezza mobile.
Perché la sicurezza mobile è importante
Dati sensibili
Le app memorizzano informazioni preziose.
Attacchi in aumento
Il mobile è un vettore sempre più esplorato.
Regolamento
LGPD, la conformità richiede protezione.
Reputazione
La perdita distrugge la fiducia.
OWASP Mobile Top 10
M1: utilizzo improprio della piattaforma
Utilizzo errato delle funzionalità di sicurezza del sistema operativo.
M2: archiviazione dati non sicura
Dati sensibili in luoghi non sicuri.
M3: Comunicazione non sicura
Trasmissione senza protezione.
M4: Autenticazione non sicura
Autenticazione debole o aggirabile.
M5: Crittografia insufficiente
Crittografia mal implementata.
M6: Autorizzazione non sicura
Controllo degli accessi non riuscito.
M7: Qualità del codice cliente
Bug e vulnerabilità nel codice.
M8: Manomissione del codice
Modifica dell'app.
M9: Ingegneria inversa
L'app può essere analizzata.
M10: Funzionalità estranea
Codice di debug in produzione.
Archiviazione sicura
Portachiavi (iOS)
Per credenziali e token.
Archivio chiavi (Android)
Sicurezza supportata dall'hardware.
Preferenze condivise crittografate
Dati crittografati.
Non utilizzare
File di testo semplice, registri, UserDefaults senza crittografia.
Comunicazione sicura
###HTTPS
Obbligatorio, sempre.
Blocco del certificato
Previene gli attacchi MITM.
###TLS 1.3
Versione più sicura.
Configurazione sicurezza di rete
Android: dichiarare le regole di sicurezza.
Autenticazione
Password complesse
Requisiti di complessità.
###AMF
Autenticazione a più fattori.
Biometria
Face ID, Touch ID, impronta digitale.
Gestione delle sessioni
Token sicuri, scadenza.
Autorizzazione
Privilegio minimo
Accesso minimo richiesto.
Lato server
Convalidare sempre sul server.
Basato sui ruoli
Autorizzazioni per ruolo.
Crittografia
Algoritmi
AES-256, RSA-2048+.
###Chiavi
Non codificato. Utilizza portachiavi/archivio chiavi.
###Salatura
Per gli hash delle password.
IV Unico
Per le modalità crittografia.
Protezione del codice
Offuscamento
Rendere difficile il reverse engineering.
ProGuard/R8 (Android)
Offuscamento del codice.
Anti-manomissione
Rileva modifiche.
Rilevamento root/jailbreak
Identificare i dispositivi compromessi.
Sicurezza dell'API
Autenticazione
Basato su token, OAuth 2.0.
Limitazione della velocità
Prevenire gli abusi.
Convalida dell'input
Convalida tutto sul server.
Codifica dell'output
Prevenire l'iniezione.
Protezione dei dati
Data di riposo
Crittografia nell'archivio.
Dati in transito
HTTPS/TLS.
Minimizzazione dei dati
Raccogli solo il necessario.
Conservazione
Non tenere più del necessario.
Test di sicurezza
SAST
Test statici di sicurezza delle applicazioni.
DAST
Test dinamico.
Test di penetrazione
Test degli hacker etici.
Scansione delle vulnerabilità
Dipendenze fallite.
Strumenti
###MobSF
Quadro di sicurezza mobile. Analisi automatizzata.
Frida
Strumentazione dinamica.
###Suite Rutto
Intercettare il traffico.
OWASP ZAP
Scansione delle vulnerabilità.
Dipendenze
Controllo NPM/Gradle
Verifica le vulnerabilità.
Aggiornamento
Mantieni aggiornate le dipendenze.
Filiera
Fai attenzione a cosa includi.
Specifico per iOS
App Sicurezza dei trasporti
Forza HTTPS.
Servizi portachiavi
Conservazione sicura.
Protezione dei dati
Protezione basata sulla schermata di blocco.
Specifico per Android
Integrità di SafetyNet/Gioco
Controlla l'integrità del dispositivo.
Configurazione sicurezza di rete
Dichiarare le politiche di rete.
Preferenze condivise crittografate
Dati crittografati.
Sviluppo sicuro
###Formazione
Sviluppatori addestrati alla sicurezza.
Revisione del codice
Revisione con particolare attenzione alla sicurezza.
Modellazione delle minacce
Identificare tempestivamente i rischi.
Campioni della sicurezza
Rappresentanti della squadra.
Conformità
LGPD
Protezione dei dati personali.
PCI-DSS
Per le app a pagamento.
HIPAA
Per le app sanitarie (Stati Uniti).
Errori comuni
Segreti codificati
Chiavi nel codice sorgente.
Log in eccesso
Dati sensibili nei log.
Validazione solo sul Client
Il server deve convalidare.
###HTTP
Comunicazione non crittografata.
Conclusione
La sicurezza mobile richiede un approccio a più livelli. Proteggi i dati, comunica in modo sicuro, autenticati correttamente e testa continuamente. La sicurezza non è una caratteristica, è un requisito.
##Domande frequenti
1) È necessario il blocco del certificato? Altamente consigliato per app con dati sensibili.
2) L'offuscamento è sufficiente? No. È uno strato, non una protezione completa.
3) Come testare la sicurezza? Strumenti automatizzati + test manuale della penna.
4) È possibile aggirare il rilevamento della radice? Sì. Utilizzare come strato, non come unica protezione.
5) HTTPS risolve tutto? No. È basilare. Hai bisogno di più strati.
Leggi anche
- Protezione dalla fuga di dati: Guida alla sicurezza
- Cloudflare WAF: cosa la protezione gestita blocca effettivamente e cosa passa
- Autenticazione dell'applicazione: Guida completa alla sicurezza e all'UX
- Manutenzione delle applicazioni mobili: Guida operativa continua
- Ottimizzazione delle prestazioni mobili: guida completa
- TypeScript per applicazioni: Guida allo sviluppo di TypeScript