La gestione dei dati degli utenti in Capacitor richiede un archiviazione sicura, politiche di conservazione chiare e conformità con le leggi di protezione dei dati come il GDPR e CCPA. Questa guida spiega come minimizzare la raccolta dei dati, proteggere informazioni sensibili e gestire efficacemente le autorizzazioni.
- Minimizzazione dei dati: Raccogli solo ciò che è necessario per le funzionalità specifiche dell'applicazione.
- Archiviazione sicura: Utilizza strumenti come il
@capacitor/secure-storageplugin per l'encryption. - Ritiro dei dati: Automatizza la cancellazione in base ai limiti di tempo definiti.
- Diritti dell'utente: Abilita gli utenti ad accedere, cancellare o esportare i propri dati.
- Gestione delle autorizzazioni: Richiedi le autorizzazioni in modo contestuale e fornisce alternative per le richieste negate.
- Aggiornamenti OTA: Assicurati di aggiornare in modo sicuro tramite rete con strumenti come Capgo.
Come utilizzare Ionic Capacitor Magazzino Sicuro

Riduzione della Raccolta di Dati
Prendere un approccio strutturato per la revisione, la pianificazione e la gestione della raccolta di dati è fondamentale per mantenere la conformità con le norme sulla privacy. Utilizzando gli strumenti integrati di Capacitor per minimizzare la raccolta di dati, puoi intraprendere passaggi pratici per migliorare le pratiche di dati dell'app.
Revisione della Raccolta di Dati
Inizia mappando come i dati scorrono attraverso l'app. Utilizza strumenti come visualizzatori di linea di dati per individuare aree in cui potrebbe essere raccolta dati non necessari. Il software di valutazione dell'impatto sulla privacy (PIA) può guidarti nell'assessare se ogni pezzo di dati è veramente necessario. Ecco una suddivisione delle aree da concentrarsi:
| Tipo di dati | Focalizzazione della revisione | Elementi da svolgere |
|---|---|---|
| Ingresso dell'utente | Campi dei form e validazione | Elimina i campi non necessari |
| API Chiamate | Carichi di richiesta/risposta | Filtra i campi di dati aggiuntivi |
| Memorizzazione | Dati memorizzati e persistenti | Semplifica l'uso della memorizzazione |
| Analisi | Tracciamento dell'uso | Conserva solo le metriche essenziali |
Obiettivi di raccolta dati
Sii chiaro sul motivo per cui stai raccogliendo ogni pezzo di dati. Ogni punto di dati dovrebbe servire un fine specifico. Ad esempio:
// Purpose-driven data collection example
const userPreferences = {
location: "Used for local weather updates",
notification: "Needed for sending alerts"
};
Se la tua app ha una funzione del tempo, potrebbe richiedere solo un codice code invece di un indirizzo completo. Questo approccio assicura di raccogliere solo le informazioni necessarie per le funzioni di base dell'app[1][5].
Controlli di input dei dati
Utilizza strumenti di validazione per limitare la quantità di dati raccolti attraverso i moduli e le API chiamate. Combina la validazione client-side con la verifica server-side per attuare questi limiti in modo efficace.
Incorpora le funzionalità di sicurezza di Capacitor per migliorare questi controlli:
- Utilizza menu a discesa al posto dei campi di testo libero dove possibile.
- Stabilisci limiti di caratteri per i campi di input di testo.
Pianifica audit trimestrali con strumenti di scoperta automatizzati per assicurarti che le tue pratiche di raccolta dati rimangano efficienti e allineate con la funzionalità dell'app prevista.
Sicurezza dei Dati e Archiviazione
Una volta definite le tue limitazioni di raccolta dati, è fondamentale implementare misure per garantire la sicurezza delle informazioni degli utenti, rispettando i principi di minimizzazione dei dati.
Configurazione di Archiviazione Sicura
Il @capacitor/secure-storage plugin utilizza funzionalità di sicurezza integrate come iOS Keychain e Android Keystore per proteggere i dati sensibili [1]. Per i dati strutturati più grandi, @capgo/capacitor-data-storage-sqlite fornisce un archivio SQLite crittografato, e @capgo/capacitor-persistent-account conserva lo stato dell'account anche dopo reinstallazioni. @capgo/capacitor-privacy-screen nasconde l'interfaccia utente sensibile nella schermata app e nella anteprima delle app recenti.
import { SecureStorage } from '@capacitor/secure-storage';
// Store sensitive data
await SecureStorage.set({
key: 'authToken',
value: 'user-specific-token'
});
// Retrieve stored data
const { value } = await SecureStorage.get({ key: 'authToken' });
Metodi di cifratura dei dati
Aggiungere la crittografia client-side è un altro strato di protezione. Le librerie come CryptoJS possono aiutare a cifrare informazioni sensibili:
// Basic encryption/decryption implementation
const encryptData = (data: string, key: string): string => {
return CryptoJS.AES.encrypt(data, key).toString();
};
Rimuovere regolarmente le chiavi di crittografia è una buona maniera per migliorare la sicurezza. Ciò assicura che anche se una chiave è compromessa, il resto dei dati rimane sicuro [2].
Confrontare le opzioni di archiviazione
La selezione della soluzione di archiviazione giusta dipende da quanto siano sensibili i dati. Ecco una rapida comparazione:
| Caratteristica | Archiviazione sicura | Archiviazione locale |
|---|---|---|
| Livello di sicurezza | Alto (crittografato) | Base |
| Miglior per | Token, password | Impostazioni non sensibili |
| Performance | Più lento (a causa dell'encryption) | Accesso più veloce |
Il Storage Sicuro API è una scelta solida per l'archiviazione di informazioni critiche come i token di autenticazione e i dati utente personali [1][4]. I suo abilità di cifratura [2].
si allineano anche con le politiche di conservazione, consentendo un accesso controllato ai dati entro i termini specificati
Limiti di archiviazione dei dati
Definire politiche di conservazione dei dati aiuta a conformarsi ai principi di minimizzazione dei dati, assicurandosi che le informazioni non siano conservate più a lungo del necessario.
Regole di archiviazione dei dati
Il diverso tipo di dati degli utenti dovrebbe avere periodi di conservazione definiti in base al loro scopo e livello di sensibilità. Ecco un framework suggerito per gestire la conservazione dei dati in Capacitor app:
| Tipo di dati | Periodo di conservazione | Giustificazione |
|---|---|---|
| Dati di account | Fino alla cancellazione dell'account o 2 anni di inattività | Necessario per le operazioni relative all'account |
| Registri delle transazioni | 7 anni | Conformità alle normative finanziarie |
| Dati di Analytics | 90 giorni (anonimizzati), 1 anno (cancellazione) | Supporta miglioramenti delle funzionalità |
| Preferenze di Marketing | Fino all'opt-out o alla cancellazione dell'account | Aderisce alle richieste di consenso |
Ecco un esempio di come memorizzare i dati con una data di scadenza in modo programmatico:
async function storeDataWithExpiration(key: string, value: any, retentionDays: number) {
const item = {
value: value,
expiration: Date.now() + (retentionDays * 24 * 60 * 60 * 1000)
};
await Preferences.set({ key, value: JSON.stringify(item) });
}
Rimozione automatica dei dati
L'automazione della pulizia dei dati può aiutare a mantenere la conformità e ridurre l'intervento manuale. Capacitor's background fetch feature è uno strumento utile per questo:
import { BackgroundFetch } from '@capacitor/background-fetch';
BackgroundFetch.registerTask({
taskId: 'data-cleanup',
delay: 3600000,
periodic: true,
requiresNetworkConnectivity: false
}, async () => {
await cleanExpiredData();
return BackgroundFetch.Result.NewData;
});
Se si utilizza SQLite per la memorizzazione, puoi configurare i trigger per eliminare automaticamente i record scaduti:
CREATE TRIGGER remove_expired_data
AFTER INSERT ON user_data
BEGIN
DELETE FROM user_data
WHERE expiration_date < CURRENT_TIMESTAMP;
END;
Opzioni di rimozione dei dati degli utenti
Fornire agli utenti strumenti per gestire i propri dati è essenziale. Ecco due funzionalità chiave che puoi implementare:
- Cancella dati specifici: Consentire agli utenti di eliminare determinati tipi di dati legati al proprio account.
async function deleteSpecificData(userId: string, dataType: string) {
await Preferences.remove({ key: `${userId}_${dataType}` });
if (db) {
await db.run(
'DELETE FROM user_data WHERE user_id = ? AND data_type = ?',
[userId, dataType]
);
}
}
- Esporta dati degli utenti: Abilitare gli utenti a scaricare i propri dati memorizzati in un formato strutturato.
async function exportUserData(userId: string) {
// Gathers all user data for export
const userData = await collectUserData(userId);
return JSON.stringify(userData);
}
L'autorità francese di protezione dei dati CNIL sottolinea che i periodi di conservazione devono essere allineati con la funzionalità di base dell'app [3]. Questo principio è particolarmente rilevante per gli sviluppatori di app Capacitor e dovrebbe guidare la tua strategia di conservazione dei dati.
Controllo delle autorizzazioni dell'app
La gestione delle autorizzazioni dell'app è fondamentale per proteggere i dati degli utenti e garantire che l'app funzioni come previsto. Gestendo correttamente le autorizzazioni, puoi limitare l'accesso solo alle funzionalità del dispositivo che la tua app realmente richiede. Capacitor’s Autorizzazioni API offre un approccio unificato per la gestione delle autorizzazioni sia su iOS che su Android.
Passaggi per la richiesta di autorizzazioni
Assicurati che le autorizzazioni richieste siano coerenti con gli obiettivi di raccolta dei dati dell'app. Ecco un esempio di implementazione per la gestione delle richieste di autorizzazioni in un'app Capacitor:
import { Permissions } from '@capacitor/core';
const permissionHandler = async (permissionType: string) => {
const status = await Permissions.query({ name: permissionType });
if (status.state === 'granted') {
return true;
}
const shouldProceed = await showExplanationDialog(
`We need ${permissionType} access to provide core functionality`
);
if (shouldProceed) {
const result = await Permissions.request({ name: permissionType });
return result.state === 'granted';
}
return false;
};
Gestione delle autorizzazioni negate
Se un utente rifiuta una richiesta di autorizzazione, fornisce alternative chiare e orientamento. Ecco un esempio:
const handleDeniedPermission = async (permissionType: string) => {
const status = await Permissions.query({ name: permissionType });
if (status.state === 'denied') {
const alternatives = {
camera: 'manual photo upload',
location: 'manual address entry',
notifications: 'in-app message center'
};
showAlternativeFeature(alternatives[permissionType]);
if (status.canOpenSettings) {
offerSettingsRedirect();
}
}
};
Richiesta di autorizzazioni nel momento giusto
Quando chiedi le autorizzazioni conta. Una strategia di timing può migliorare significativamente le tassi di accettazione degli utenti. Ecco una rapida panoramica delle strategie di timing:
| Strategia di timing | Utilizzo migliore |
|---|---|
| Giusto in tempo | Per funzionalità specifiche quando necessario |
| Contesto | Per funzionalità non critiche |
| Primo Avvio | Per funzionalità di base richieste in anticipo |
| Ritardato | Per funzionalità facoltative in un momento successivo del percorso dell'utente |
Ad esempio, puoi richiedere l'accesso alla fotocamera solo quando l'utente inizia un'azione come scattare una foto:
const captureImage = async () => {
const userStartedCapture = true;
if (userStartedCapture) {
const granted = await permissionHandler('camera');
if (granted) {
await startCamera();
} else {
showUploadOption();
}
}
};
Le richieste contestuali come questa possono aumentare le percentuali di accettazione del 50% rispetto alle richieste in anticipo [2]. Assicurati di mantenere uno stato di tracciamento delle autorizzazioni che salva le decisioni dell'utente tra le sessioni.
Una volta gestite le autorizzazioni, puoi concentrarti sulla sicurezza degli aggiornamenti, soprattutto per i deployment OTA.
Sicurezza Aggiornamento OTA
Per garantire l'integrità dei dati durante Aggiornamenti dell'applicazione, è fondamentale utilizzare processi di aggiornamento OTA (Over-The-Air) sicuri. Questi aggiornamenti aiutano a prevenire modifiche non autorizzate all'applicazione __CAPGO_KEEP_0__, che altrimenti potrebbero bypassare i limiti sulla raccolta dei dati., it’s crucial to use secure OTA (Over-The-Air) update processes. These updates help prevent unauthorized changes to app code, which could otherwise bypass limits on data collection.
La firma degli aggiornamenti dei pacchetti è un passaggio critico per proteggersi contro modifiche non autorizzate all'applicazione __CAPGO_KEEP_0__. Ecco alcune misure chiave per assicurare l'aggiornamento OTA sicuro:
Signing update packages is a critical step in protecting against unauthorized code changes. Here are some key measures to secure OTA updates:
| Come funziona | Protezione del contenuto |
|---|---|
| Crittografia AES | Sicurezza della consegna |
| HTTPS con pinning del certificato | Integrità dell'aggiornamento |
| Verifica della firma | Verifica della firma del pacchetto |
| Versione Sicurezza | Versioni firmate |
| Recupero Fallimento | Capacità di rollback istantaneo |
Capgo Sistema di Aggiornamento

Capgo semplifica gli aggiornamenti sicuri OTA per le Capacitor app offrendo funzionalità di sicurezza automatizzate. Ecco un esempio di come utilizzare il sistema di aggiornamento di Capgo nel tuo app:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
const secureUpdate = async () => {
try {
const update = await CapacitorUpdater.download({
version: 'latest',
validateSignature: true
});
if (update.status === 'success') {
await CapacitorUpdater.set(update);
}
} catch (error) {
await CapacitorUpdater.rollback();
}
};
Questa approccio garantisce che gli aggiornamenti siano validati e sicuri, con opzioni di rollback in caso di fallimento.
Conformità alla Politica dello Store
La conformità alle linee guida degli store è necessaria per gli aggiornamenti OTA[1][6][7]Ogni piattaforma ha specifiche richieste per garantire che gli aggiornamenti siano conformi alle loro politiche di conservazione dei dati e di sicurezza:
| Piattaforma | Requisiti di conformità |
|---|---|
| iOS | Solo aggiornamenti JavaScript o di asset |
| Android | Deve essere ottenuta il consenso dell'utente |
| Entrambi | Verifica della sicurezza e documentazione adeguata |
Di seguito è riportato un esempio di implementazione di aggiornamenti conformi allo store:
const compliantUpdate = async () => {
const userConsent = await requestUpdateConsent();
if (userConsent) {
await CapacitorUpdater.setUpdateConfig({
type: 'assets-only',
scope: 'ui-updates' // Updates limited to UI components
});
}
};
const preventDowngrade = async (newVersion, currentVersion) => {
const versions = await CapacitorUpdater.getVersions();
if (versions.current.buildNumber > newVersion.buildNumber) {
throw new Error('Downgrade attempt detected');
}
};
Riepilogo
Punti chiave
La gestione efficace dei dati dell'utente comporta la combinazione di queste strategie fondamentali:
- Raccogli solo i dati necessari.
- Utilizza l'encryption nativo della piattaforma per proteggerli.
- Automatizza i termini di conservazione dei dati.
- Configura controlli di accesso dettagliati.
Questi passaggi lavorano insieme per garantire la conformità dal momento in cui i dati vengono raccolti fino a quando non vengono automaticamente eliminati.
Passaggi per l'Implementazione
Per mettere in pratica queste strategie:
- Auditare i flussi di dati utilizzando i metodi discussi nella sezione 2.
- Rafforzare la sicurezza dello storage come descritto nella sezione 3.
- Configura processi di cancellazione automatica basati sulla sezione 4.
- Stabilisci e applica controlli di accesso dettagliati come descritti nella sezione 5.
Sfruttando Capgo
Per le squadre che gestiscono gli aggiornamenti OTA, Capgo offre strumenti di sicurezza integrati che si allineano a questi sforzi:
- Crittografia end-to-end per proteggere i pacchetti di aggiornamento.
- Monitoraggio in tempo reale per affrontare velocemente le potenziali minacce alla sicurezza.
Continua da Come gestire i dati degli utenti nelle app Capacitor
Se stai utilizzando Come gestire i dati degli utenti nelle app Capacitor per pianificare la sicurezza e la conformità, connettilo con Crittografia per i dettagli di implementazione in Crittografia Conformità per i dettagli di implementazione nella Compliance, Capgo Scansionatore di Sicurezza per il flusso di lavoro del prodotto in Capgo Scansionatore di Sicurezza, Capgo Sicurezza per il flusso di lavoro del prodotto in Capgo Sicurezza, e Capgo Centro di Trust per il flusso di lavoro del prodotto in Capgo Centro di Trust.