Die Handhabung von Benutzerdaten in Capacitor Apps erfordert sicheren Speicher, klare Aufbewahrungsrichtlinien und Einhaltung von Datenschutzgesetzen wie DSGVO und CCPA. This guide explains how to minimize data collection, secure sensitive information, and manage permissions effectively. Here’s a quick overview:
- Datenminimierung: Erheben Sie nur das notwendige für bestimmte App-Funktionen.
- Sichere Speicherung: Verwenden Sie Werkzeuge wie das
@capacitor/secure-storagePlugin für Verschlüsselung. - Datenlagerung: Automatisieren Sie die Löschung basierend auf definierten Zeitgrenzen.
- Benutzerrechte: Aktivieren Sie Benutzer, um auf, zu löschen oder ihr Daten zu exportieren.
- Zugriffsrechteverwaltung: Anfragen von Berechtigungen im Kontext stellen und Alternativen für abgelehnte Anfragen bereitstellen.
- OTA Updates: Stellen Sie sicher, dass sichere Übertragungen über das Internet mit Werkzeugen wie Capgo.
Wie man Ionic verwendet Capacitor Sichere Speicherung

Reduzierung der Datenerfassung
Ein strukturierter Ansatz bei der Überprüfung, Planung und Verwaltung der Datenerfassung ist entscheidend, um mit den Datenschutzvorschriften im Einklang zu bleiben. Durch die Nutzung der in Capacitor integrierten Werkzeuge zur Minimierung der Datenerfassung können Sie praktische Schritte unternehmen, um die Datenpraktiken Ihres Apps zu verbessern.
Überprüfung der Datenerfassung
Beginnen Sie damit, wie Daten durch Ihre App fließen. Verwenden Sie Werkzeuge wie Datenlinienvisualisierer, um Bereiche zu identifizieren, in denen unnötige Daten gesammelt werden könnten. Datenschutz-Impact-Assessment-Software kann Ihnen dabei helfen, zu bewerten, ob jede einzelne Datenmenge tatsächlich benötigt wird. Hier ist eine Übersicht über Bereiche, auf die Sie sich konzentrieren sollten:
| Datentyp | Review-Schwerpunkt | Aufgabenliste |
|---|---|---|
| Benutzereingabe | Formulare und Validierung | Felder entfernen, die nicht benötigt werden |
| API Aufrufe | Anfrage/Antwort-Payloads | Überflüssige Datenfelder filtern |
| Speicherung | Gespeicherte und persistente Daten | Speicherplatznutzung optimieren |
| Analytics | Nutzungsverfolgung | Halten Sie nur die wesentlichen Metriken bei |
Zielsetzungen für die Datenerfassung
Seien Sie klar darüber, warum Sie jeden einzelnen Datensatz sammeln. Jeder Datensatz sollte einem bestimmten Zweck dienen. Zum Beispiel:
// Purpose-driven data collection example
const userPreferences = {
location: "Used for local weather updates",
notification: "Needed for sending alerts"
};
Wenn Ihre App eine Wetterfunktion hat, könnte sie nur eine Postleitzahl code benötigen und nicht die gesamte Adresse. Diese Vorgehensweise sichert sich, dass Sie nur die notwendigen Informationen für die grundlegenden Anwendungsfeatures sammeln[1][5].
Dateneingabe-Kontrollen
Use validation tools to limit the amount of data collected through forms and API calls. Combine client-side validation with server-side verification to enforce these limits effectively.
Integrieren Sie Capacitor’s Sicherheitsfunktionen, um diese Kontrollen zu stärken:
- Verwenden Sie Dropdown-Menüs anstelle von freitextfeldern, wo immer möglich.
- Setzen Sie Charaktergrenzen für Texteingabefelder.
Planen Sie quartalsweise Audits mit automatisierten Entdeckungstools, um sicherzustellen, dass Ihre Datenerfassungspraktiken effizient und im Einklang mit der beabsichtigten Funktionalität Ihrer App bleiben.
Daten-Sicherheit und -Speicherung
Sobald Sie Ihre Daten-Sammlungsgrenzen definiert haben, ist es entscheidend, Maßnahmen zu ergreifen, um Benutzerinformationen zu schützen, während Sie sich an den Grundsätzen der Datenminimierung halten.
Sichere Speicherung einrichten
Das @capacitor/secure-storage Plugin verwendet eingebaute Sicherheitsfunktionen wie iOS-Schlüsselkasten und Android-Keystore, um sensible Daten zu schützen [1]. Für größere strukturierte Datensätze bietet @capgo/capacitor-data-storage-sqlite verschlüsselte SQLite-Speicherung an, und @capgo/capacitor-persistent-account kann den Benutzerzustand über Wiederinstallationen aufrechterhalten. @capgo/capacitor-privacy-screen verschleiert sensitive UI im App-Switcher und im Preview der zuletzt geöffneten Apps.
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' });
Datenschutzmethoden
Die Hinzufügung von Client-Seitenverschlüsselung ist ein weiterer Schutzschicht. Bibliotheken wie CryptoJS können dabei helfen, sensible Informationen zu verschlüsseln:
// Basic encryption/decryption implementation
const encryptData = (data: string, key: string): string => {
return CryptoJS.AES.encrypt(data, key).toString();
};
Die regelmäßige Rotation von Verschlüsselungsschlüsseln ist eine intelligente Möglichkeit, die Sicherheit zu verbessern. So wird sichergestellt, dass selbst wenn ein Schlüssel kompromittiert wird, der Rest der Daten sicher bleibt [2].
Speicheroptionen vergleichen
Die Auswahl der richtigen Speichersolution hängt von der Sensibilität der Daten ab. Hier ist eine schnelle Übersicht:
| Funktion | Sichere Speicherung | Local Storage |
|---|---|---|
| Sicherheitsstufe | Hoch (verschlüsselt) | Grundlegend |
| Am besten geeignet für | Tokens, Passwörter | Nicht-sensitive Einstellungen |
| Leistung | Langsamer (wegen Verschlüsselung) | Schnellere Zugriff |
Der sichere Speicher API ist eine gute Wahl für die Speicherung kritischer Informationen wie Authentifizierungstoken und persönlichen Benutzerdaten [1][4]. Seine Verschlüsselungsfähigkeiten passen auch zu den Aufbewahrungsrichtlinien, indem sie einen kontrollierten Zugriff auf Daten innerhalb von spezifizierten Zeitrahmen ermöglichen [2].
sbb-itb-f9944d2
Speicherzeitlimits
Ein klares Datenhaltedatum hilft dabei, die Grundsätze der Datenminimierung zu unterstützen, indem Informationen nicht länger als notwendig gespeichert werden.
Speicherzeitregeln
Verschiedene Arten von Benutzerdaten sollten aufgrund ihres Zwecks und ihrer Sensibilität definierte Aufbewahrungszeiträume haben. Hier ist ein vorgeschlagenes Framework zur Verwaltung der Datenhaltedauer in __CAPGO_KEEP_0__-Anwendungen Capacitor apps:
| Aufbewahrungszeitraum | Rechtfertigung | Kundenkundendaten |
|---|---|---|
| Bis zur Löschung des Kontos oder 2 Jahren Inaktivität | Für accountbezogene Operationen erforderlich | Transaktionsprotokolle |
| bis zur Löschung des Kontos oder 2 Jahren Inaktivität | 7 Jahre | Kongruenz mit Finanzvorschriften |
| Analyse-Daten | 90 Tage (anonymisiert), 1 Jahr (Löschung) | Unterstützt Verbesserungen von Funktionen |
| Marketing-Präferenzen | Bis zum Widerruf oder Löschung des Kontos | Einhaltung von Zustimmungsanforderungen |
Hier ist ein Beispiel dafür, wie Daten mit einer Ablaufzeit programmatisch gespeichert werden können:
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) });
}
Automatische Löschung von Daten
Die Automatisierung der Datenreinigung kann die Einhaltung von Vorschriften erleichtern und die manuelle Intervention reduzieren. Capacitor's Hintergrund-Abfrage-Funktion ist ein nützliches Werkzeug für dies:
import { BackgroundFetch } from '@capacitor/background-fetch';
BackgroundFetch.registerTask({
taskId: 'data-cleanup',
delay: 3600000,
periodic: true,
requiresNetworkConnectivity: false
}, async () => {
await cleanExpiredData();
return BackgroundFetch.Result.NewData;
});
Wenn Sie SQLite für den Speicher können Sie Trigger einrichten, um veraltete Datensätze automatisch zu löschen:
CREATE TRIGGER remove_expired_data
AFTER INSERT ON user_data
BEGIN
DELETE FROM user_data
WHERE expiration_date < CURRENT_TIMESTAMP;
END;
Benutzerdatenlöschmöglichkeiten
Die Bereitstellung von Werkzeugen für die Datenverwaltung für die Benutzer ist entscheidend. Hier sind zwei wichtige Funktionen, die Sie implementieren können:
- Datensatz löschen: Erlassen Sie Benutzern die Möglichkeit, bestimmte Datentypen, die mit ihrem Account verbunden sind, zu löschen.
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]
);
}
}
- Benutzerdaten exportieren: Aktivieren Sie die Möglichkeit, dass Benutzer ihre gespeicherten Daten in einer strukturierten Form herunterladen können.
async function exportUserData(userId: string) {
// Gathers all user data for export
const userData = await collectUserData(userId);
return JSON.stringify(userData);
}
Die französische Datenschutzbehörde CNIL hält fest, dass sich die Aufbewahrungsfristen an die Kernfunktion des Apps anpassen müssen [3]. Dieses Prinzip ist insbesondere für Capacitor-App-Entwickler von Bedeutung und sollte Ihre Datensicherheitsstrategie leiten.
App-Berechtigungen-Kontrolle
Handling app permissions carefully is key to safeguarding user data while ensuring your app functions as intended. By managing permissions properly, you can limit access to only the device features your app truly needs. Capacitor’s Permissions API offers a unified approach to managing permissions on both iOS and Android.
Berechtigungsanforderungsschritte
Stellen Sie sicher, dass die von Ihnen angeforderten Berechtigungen mit den Datenverteilungszielen Ihrer App übereinstimmen. Hier ist ein Beispiel für die Implementierung von Berechtigungsanforderungen in einer Capacitor-App:
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;
};
Verwaltung abgelehnter Berechtigungen
Wenn ein Benutzer eine Berechtigungsanforderung ablehnt, bieten Sie klare Alternativen und Anweisungen an. Hier ist ein Beispiel:
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();
}
}
};
Berechtigungsanforderungszeitpunkt
Wenn Sie Berechtigungen anfragen, spielt der Zeitpunkt eine Rolle. Eine strategische Zeitplanung kann die Akzeptanzraten der Benutzer erheblich verbessern. Hier ist eine schnelle Übersicht über die Zeitstrategien:
| Zeitstrategie | Beste Verwendungsfälle |
|---|---|
| Zu den richtigen Zeitpunkt | Für bestimmte Funktionen, wenn erforderlich |
| Kontextuell | Für nicht kritische Funktionen |
| Erster Start | Für Kernfunktionen, die vorher erforderlich sind |
| Verschoben | Für optional Funktionen später im Benutzererlebnis |
Beispiel: Sie können die Kamera-Zugriff nur dann anfordern, wenn der Benutzer eine Aktion wie das Aufnehmen eines Fotos initiiert:
const captureImage = async () => {
const userStartedCapture = true;
if (userStartedCapture) {
const granted = await permissionHandler('camera');
if (granted) {
await startCamera();
} else {
showUploadOption();
}
}
};
Kontextuelle Anfragen dieser Art können die Akzeptanzraten um 50% gegenüber vorherigen Anfragen erhöhen [2]Um eine glatte Erfahrung zu gewährleisten, halten Sie einen Zustandstracker für Berechtigungen auf, der Benutzerentscheidungen über Sitzungen hinweg speichert
Nachdem die Berechtigungen bearbeitet wurden, können Sie sich auf die Sicherung von Updates konzentrieren, insbesondere für drahtlose (OTA) Bereitstellungen
Sicherheit bei OTA-Updates
Um die Datenintegrität während der Übertragung zu gewährleisten App-Updates, es ist entscheidend, sichere OTA (Over-The-Air)-Update-Prozesse zu verwenden. Diese Updates helfen dabei, unautorisierte Änderungen an der App code zu verhindern, die sonst die Grenzen für die Datenverteilung umgehen könnten.
Update-Paket-Signierung
Die Signierung von Update-Paketen ist ein kritischer Schritt zur Abwehr unautorisierter code-Änderungen. Hier sind einige wichtige Maßnahmen, um OTA-Updates zu sichern:
| Sicherheitsmaßnahme | Wie es geht |
|---|---|
| Inhaltsschutz | AES-Verschlüsselung |
| Zustell-Sicherheit | HTTPS mit Zertifikatspinning |
| Update-Integrität | Hash-Überprüfung |
| Sicherheitsversion | Gezeichnete Versionsnummern |
| Fehlerwiederherstellung | Instant-Wiederherstellungsvermögen |
Capgo Update-System

Capgo vereinfacht sichere OTA-Updates für Capacitor-Apps, indem es automatisierte Sicherheitsfunktionen bietet. Hier ist ein Beispiel dafür, wie man Capgo's Update-System in seiner App verwendet:
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();
}
};
Diese Vorgehensweise stellt sicher, dass Updates validiert und sicher sind, mit Wiederherstellungsoptionen im Falle eines Fehlers.
Zustimmungspolitik des App-Stores
Die Einhaltung der Richtlinien des App-Stores ist für OTA-Updates erforderlich[1][6][7]Jedes Plattform hat spezifische Anforderungen, um sicherzustellen, dass Updates den Richtlinien zur Datenretention und Sicherheit entsprechen:
| Plattform | Anforderungen zur Einhaltung von Vorschriften |
|---|---|
| iOS | Nur JavaScript- oder Asset-Updates |
| Android | Die Zustimmung des Benutzers muss eingeholt werden |
| Beide | Sicherheitsprüfungen und ordnungsgemäße Dokumentation |
Unten ist ein Beispiel für die Implementierung von store-konformen Updates gezeigt:
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');
}
};
Zusammenfassung
Hauptergebnisse
Der effektive Umgang mit Benutzerdaten beinhaltet die Combination dieser Kernstrategien:
- Sammeln Sie nur die notwendigen Daten.
- Verwenden Sie Plattform-spezifische Verschlüsselung, um sie zu schützen.
- Automatisieren Sie Fristen für die Aufbewahrung von Daten.
- Einrichten Sie detaillierte Kontrollen für die Berechtigungen.
Diese Schritte arbeiten zusammen, um die Einhaltung von der Zeitpunkt der Datenerfassung bis zur automatischen Löschung sicherzustellen.
Schritte zur Implementierung
Um diese Strategien in die Tat umzusetzen:
- Überprüfen Sie Ihre Datenströme mithilfe der in Abschnitt 2 diskutierten Methoden.
- Stärken Sie die Sicherheit der Datenspeicherung, wie in Abschnitt 3 beschrieben.
- Einrichten Sie automatisierte Löschvorgänge auf der Grundlage von Abschnitt 4.
- Ermöglichen Sie und durchsetzen Sie die in Abschnitt 5 detaillierten Berechtigungssteuerungen.
Nutzen Sie Capgo
Für Teams, die OTA-Updates verwalten, bietet Capgo integrierte Sicherheitstools, die sich mit diesen Bemühungen decken:
- End-to-End-Verschlüsselung um Update-Pakete zu sichern.
- Echtzeit-Monitoring um potenzielle Sicherheitsbedrohungen schnell anzugehen.
Weitermachen von Wie man Nutzerdaten in Capacitor-Apps handhabt
Wenn Sie Wie man Nutzerdaten in Capacitor-Apps handhabt zum Planen von Sicherheit und Compliance verwenden, verbinden Sie es mit Verschlüsselung für die Implementierungsdetails in Verschlüsselung, Kongruenz für die Implementierungsdetails in Compliance, Capgo Sicherheits-Scanner für den Produktworkflow in Capgo Sicherheits-Scanner, Capgo Sicherheit für den Produktworkflow in Capgo Sicherheit, und Capgo Trust Center für den Produktworkflow in Capgo Trust Center.