Mantenere le tue chiavi API sicure è fondamentale per proteggere i dati degli utenti e rispettare le regole degli store. Esporre le chiavi può causare data breach, abuso dei servizi e compromissione degli account.
Punti chiave:
- Evita di memorizzare le chiavi in code: Usa variabili d'ambiente o file sicuri.
- Usa gli strumenti della piattaforma: iOS Keychain e Android EncryptedSharedPreferences.
- Crittografa le chiavi API: Aggiungi un ulteriore livello di sicurezza con la crittografia AES-256.
- Trasporto sicuro: Usa sempre HTTPS e valuta l'SSL certificate pinning.
- Monitora e ruota le chiavi: Ruota regolarmente le chiavi e monitora l'uso per eventuali anomalie.
Implementando queste pratiche, potrai proteggere la tua app, rispettare le linee guida di Apple e Google e tutelare i tuoi utenti.
Metodi sicuri per lo storage delle chiavi API
Rimuovi le chiavi API dal Code
Includere le chiavi API direttamente nel code può esporle a decompilazione o leak del repository. Per evitarlo, considera questi approcci:
- Usa variabili d'ambiente per lo sviluppo locale.
- Salva le chiavi in file di configurazione sicuri esclusi dal version control.
- Affidati a servizi di configurazione remota per gestire le chiavi.
Per iOS, considera l'uso di File XCConfig per separare le configurazioni dal codebase. Su Android, puoi gestire le chiavi tramite gradle.properties:
# Store in ~/.gradle/gradle.properties
API_KEY=your_key_here
# Reference in build.gradle
buildConfigField "String", "API_KEY", "\"${project.API_KEY}\""
Strumenti di Sicurezza della Piattaforma
Sfrutta gli strumenti specifici della piattaforma per migliorare la sicurezza quando memorizzi le chiavi API.
Su iOS, usa Keychain Services per un archivio sicuro:
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "APIKey",
kSecValueData as String: apiKey.data(using: .utf8)!
]
let status = SecItemAdd(query as CFDictionary, nil)
Per Android, utilizza EncryptedSharedPreferences per la memorizzazione sicura delle chiavi:
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val sharedPreferences = EncryptedSharedPreferences.create(
context,
"secret_shared_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
Separa le Chiavi per Ambiente
Usa chiavi API diverse per gli ambienti di development, staging e production. Ogni ambiente dovrebbe avere:
- Un piano di rotazione delle chiavi.
- Monitoraggio dell'utilizzo.
- Controlli di accesso rigorosi.
Memorizza le chiavi specifiche per ogni store in variabili CI/CD sicure invece che nei file di configurazione. Questo garantisce la protezione delle chiavi supportando i processi di build automatizzati. Inoltre, assicurati di utilizzare meccanismi di trasporto sicuri per proteggere le chiavi durante la trasmissione.
Sicurezza Mobile iOS Avanzata – Runtime Attacks & API Key …
Sicurezza del trasporto delle chiavi API
Proteggere le chiavi API durante il transito è essenziale per salvaguardare i dati degli utenti e rispettare i requisiti degli store. Protocolli di trasporto sicuri aiutano a prevenire attacchi man-in-the-middle e accessi non autorizzati.
Implementazione HTTPS
Per mettere in sicurezza la comunicazione API, reindirizza sempre il traffico HTTP verso HTTPS. Usa TLS 1.3 o versioni successive e ottieni certificati SSL da una Certificate Authority affidabile.
Ecco un esempio base di come forzare l'HTTPS in un'applicazione Express application:
const express = require('express');
const app = express();
// Redirect HTTP to HTTPS
app.use((req, res, next) => {
if (!req.secure) {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
});
Per un ulteriore livello di protezione, considera l'implementazione del certificate pinning.
SSL Certificate Pinning
Il certificate pinning assicura che il certificato SSL del server corrisponda a una copia fidata, impedendo l'uso di certificati falsi.
Su iOS, puoi implementare il certificate pinning usando URLSession. Ecco un esempio:
class APIManager: NSObject, URLSessionDelegate {
func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
guard let serverTrust = challenge.protectionSpace.serverTrust,
let certificate = SecTrustGetCertificateAtIndex(serverTrust, 0) else {
completionHandler(.cancelAuthenticationChallenge, nil)
return
}
// Compare certificate with pinned certificate
if validateCertificate(certificate) {
completionHandler(.useCredential, URLCredential(trust: serverTrust))
} else {
completionHandler(.cancelAuthenticationChallenge, nil)
}
}
}
Oltre a proteggere il trasporto, cripta le chiavi API a livello applicativo.
Crittografia chiavi API
Crittografare le chiavi API aggiunge un altro livello di sicurezza. Capgo, ad esempio, usa la crittografia end-to-end per gli aggiornamenti dell'app.
“L'unica soluzione con vera crittografia end-to-end, le altre si limitano a firmare gli update” - Capgo [1]
Per crittografare le chiavi API, usa algoritmi affidabili. Ecco un esempio di crittografia di una chiave API con AES-256-GCM in Node.js:
const crypto = require('crypto');
function encryptAPIKey(apiKey, encryptionKey) {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv('aes-256-gcm', encryptionKey, iv);
let encrypted = cipher.update(apiKey, 'utf8', 'hex');
encrypted += cipher.final('hex');
return {
encrypted: encrypted,
iv: iv.toString('hex'),
tag: cipher.getAuthTag().toString('hex')
};
}
Combinare HTTPS, certificate pinning e crittografia garantisce una difesa robusta per le tue chiavi API.
Gestione della sicurezza delle chiavi API
Gestire efficacemente le chiavi API significa monitorarne l'uso, ruotarle regolarmente e applicare controlli di accesso rigorosi. Questi passaggi proteggono i dati sensibili e garantiscono la compliance con i requisiti degli app store.
Monitoraggio dell'utilizzo
Monitorare l'uso delle chiavi API è fondamentale per individuare attività insolite. Usa analytics in tempo reale per monitorare:
- Pattern e volumi delle richieste
- Località geografiche di accesso
- Tassi e tipologie di errore
- Fallimenti di autenticazione
Ecco un esempio in Node.js:
const apiMetrics = {
trackRequest: (apiKey, endpoint) => {
// Log request details
const requestData = {
timestamp: new Date().toISOString(),
endpoint,
apiKey: hashKey(apiKey),
geoLocation: getRequestLocation(),
responseTime: calculateResponseTime()
};
// Alert on suspicious patterns
if (isAnomalous(requestData)) {
notifySecurityTeam(requestData);
}
}
};
Programma di rotazione delle chiavi
Una volta compreso il pattern di utilizzo, assicurati di ruotare le chiavi regolarmente. I processi di rotazione automatizzati aiutano a rispettare i requisiti degli app store. Ecco alcune strategie:
- Rotazione di emergenza: Disabilita immediatamente le chiavi in caso di sospetta violazione.
- Rotazione pianificata: Aggiorna le chiavi di produzione ogni trimestre.
- Rotazione per lo sviluppo: Aggiorna le chiavi degli ambienti di test ogni mese.
Per ridurre al minimo i disservizi, utilizza un periodo di transizione durante i cambiamenti critici:
const keyRotation = {
oldKey: process.env.OLD_API_KEY,
newKey: process.env.NEW_API_KEY,
transitionPeriod: 7 * 24 * 60 * 60 * 1000, // 7 days
startDate: new Date()
};
Configurazione del controllo accessi
Monitoraggio e rotazione sono solo una parte della soluzione. Devi anche applicare controlli di accesso rigorosi. Assegna i permessi in base alla necessità seguendo il principio del minimo privilegio:
const accessControl = {
validateAccess: (apiKey, requestedOperation) => {
const keyPermissions = getKeyPermissions(apiKey);
const environmentType = getCurrentEnvironment();
return isOperationAllowed(keyPermissions, requestedOperation, environmentType);
}
};
Controlla regolarmente chi ha l'accesso, adegua i permessi quando necessario e imposta alert automatici per attività insolite. Queste misure ti aiuteranno a mantenere una sicurezza elevata restando in linea con le regole degli app store.
Capgo Funzionalità di sicurezza

Capgo potenzia la sicurezza delle app combinando metodi di storage e trasporto sicuri con funzionalità avanzate integrate nella piattaforma.
Architettura di sicurezza di Capgo
Il sistema di Capgo ha già erogato oltre 23,5 milioni di aggiornamenti sicuri a 750 app in produzione [1]. Utilizza crittografia end-to-end, garantendo che solo gli utenti autorizzati possano decriptare gli aggiornamenti. Ecco i dettagli della configurazione di sicurezza:
const capgoSecurity = {
encryptionType: 'end-to-end',
keyStorage: {
separate: true,
encrypted: true,
environment: process.env.NODE_ENV
},
updateVerification: async (update) => {
const isValid = await verifySignature(update);
const isAuthorized = await checkUserPermissions(update.userId);
return isValid && isAuthorized;
}
};
Questo design non solo protegge le chiavi API, ma semplifica anche la conformità ai requisiti degli app store.
Conformità alle linee guida App Store
Capgo garantisce aggiornamenti rapidi e sicuri, con un tasso di successo globale dell'82% e il 95% degli utenti attivi che riceve gli update entro 24 ore [1]. Le sue funzionalità aiutano a gestire potenziali vulnerabilità:
- Rotazione automatica delle chiavi in linea con le policy degli app store
- Controlli di deployment personalizzati per ambienti specifici
- Permessi granulari per la gestione degli update
Integrazione della sicurezza CI/CD
Capgo si integra perfettamente con le piattaforme CI/CD per potenziare la protezione delle chiavi API. Ecco un esempio di integrazione:
capgo_deployment:
environment:
- CAPGO_API_KEY: ${SECURED_API_KEY}
- APP_ENV: production
security:
- signature_verification: true
- key_rotation: enabled
- access_control: role_based
| Funzionalità di sicurezza | Implementazione |
|---|---|
| Crittografia delle chiavi | Crittografia end-to-end durante build e deployment |
| Controllo degli accessi | Permessi basati sui ruoli per i trigger di deployment |
| Registrazione degli audit log | Log dettagliati di tutte le attività di deployment |
| Controllo di versione | Tracciamento sicuro degli update distribuiti |
“Crittografia end-to-end. Solo i tuoi utenti possono decriptare gli update, nessun altro.” [1] - Capgo
Riassunto
Proteggere le chiavi API è fondamentale per rispettare i requisiti degli app store e salvaguardare i dati degli utenti. Ecco una panoramica delle migliori pratiche e dei prossimi passi.
Checklist di sicurezza
La tabella seguente illustra i passaggi fondamentali per proteggere le chiavi API in conformità con gli standard di Apple e Google:
| Misure di Sicurezza | Requisiti di Implementazione | Impatto sulla Compliance |
|---|---|---|
| Sicurezza dello Storage | Usa crittografia end-to-end e ambienti separati | In linea con le regole di protezione dati Apple/Google |
| Livello di trasporto | Imponi HTTPS e usa l'SSL certificate pinning | Protegge i dati durante la trasmissione |
| Controllo degli Accessi | Applica permessi basati sui ruoli e traccia gli access logs | Blocca gli accessi non autorizzati |
| Gestione delle chiavi | Ruota le chiavi automaticamente e usa chiavi specifiche per ogni ambiente | Garantisce una sicurezza forte e costante |
Usa questa checklist come guida per mettere in sicurezza le tue chiavi API.
Prossimi passi
-
Audita l'implementazione attuale
Controlla i metodi di storage e trasporto delle chiavi per eventuali vulnerabilità, concentrandoti su crittografia ed esposizione del code sorgente.
-
Implementa misure di sicurezza
Applica la crittografia end-to-end per ridurre i rischi e rispettare i requisiti degli app store.
-
Configura sistemi di monitoraggio
Imposta alert automatizzati ed esegui audit regolari per garantire una sicurezza continua.
“Conforme alle norme App Store” - Capgo [1]
Continua a leggere: API Key Security for App Store Compliance
Se stai usando Sicurezza delle chiavi API per la conformità all'App Store per pianificare sicurezza e compliance, collegalo a Crittografia per i dettagli di implementazione in Encryption, Conformità per i dettagli di implementazione in Compliance, Scanner di sicurezza Capgo per il workflow di Capgo Security Scanner, Sicurezza Capgo per il workflow di Capgo Security, e Trust Center di Capgo per il workflow di Capgo Trust Center.