Zum Hauptinhalt springen

Wie Capacitor-Apps Benutzerdaten handhaben

Lernen Sie effektive Strategien zum Handhaben von Benutzerdaten in mobilen Apps kennen, die sich auf Sicherheit, Einhaltung und Datenmanagement-Grundsätze konzentrieren.

Martin Donadieu

Martin Donadieu

Content-Marketing-Beauftragter

Wie Capacitor-Apps Benutzerdaten handhaben

Die Handhabung von Benutzerdaten in Capacitor Apps erfordern sichere Speicherung, klare Aufbewahrungsrichtlinien und Einhaltung von Datenschutzgesetzen wie DSGVO und CCPA. Dieses Leitfaden erklärt, wie man die Datenerfassung minimiert, sensible Informationen sicher speichert und die Berechtigungen effektiv verwaltet. Hier ist ein schneller Überblick:

  • Datenminimierung: Sammeln Sie nur, was für bestimmte App-Funktionen erforderlich ist.
  • Sichere Speicherung: Verwenden Sie Werkzeuge wie das @capacitor/secure-storage Plugin für die Verschlüsselung.
  • Datenretention: Automatisieren Sie die Löschung auf der Grundlage definerter Zeitgrenzen.
  • Benutzerrechte: Benutzer ermöglichen, auf ihr Daten zuzugreifen, zu löschen oder zu exportieren.
  • Zugriffsrechteverwaltung: Anfragen zu Rechten im Kontext stellen und Alternativen für abgelehnte Anfragen anbieten.
  • OTA-Updates: Sichere Übertragung von Updates über das Internet mit Werkzeugen wie Capgo.

Ionic-Verwendung Capacitor Sichere Speicherung

Capacitor Framework Dokumentationswebsite

Datenerfassung reduzieren

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 Ihrer App 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. Software zur Privacy-Impact-Assessment (PIA) kann Ihnen dabei helfen, zu bewerten, ob jede einzelne Datenmenge tatsächlich benötigt wird. Hier ist eine Auflistung der Bereiche, auf die Sie sich konzentrieren sollten:

Datenart Überprüfungsschwerpunkt Aufgaben
Eingaben des Benutzers Formulare und -validierung Felder entfernen, die nicht benötigt werden
API-Aufrufe Anforderungs-/Antwort-Payloads Überflüssige Datenfelder ausschließen
Speicherung Zugriff auf und persistente Daten Speicherplatznutzung optimieren
Analyse Verwendungsnachverfolgung Erhalten Sie nur die wichtigsten Metriken

Zielsetzungen für die Datenerfassung

Seien Sie transparent über die Gründe, warum Sie jede einzelne Datenpunkte sammeln. Jeder Datenpunkt 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 Ihr App eine Wetterfunktion hat, könnte sie nur eine Postleitzahl code anstelle einer vollständigen Adresse benötigen. Diese Vorgehensweise sichert, dass Sie nur die notwendigen Informationen für die grundlegenden App-Funktionen sammeln[1][5].

Dateneingabe-Kontrollen

Verwenden Sie Validierungstools, um die Menge der durch Formulare und API-Anrufe gesammelten Daten zu limitieren. Combine client-seitige Validierung mit server-seitiger Überprüfung, um diese Grenzen effektiv durchzusetzen.

Inkorporieren Sie Capacitor’s Sicherheitsfunktionen, um diese Kontrollen zu verbessern:

  • Verwenden Sie Dropdown-Menüs anstelle von freitextfeldern, wo immer möglich.
  • Setzen Sie Charaktergrenzen für Texteingabefelder.

Planen Sie Quartalsprüfungen mit automatischen Entdeckungstools, um sicherzustellen, dass Ihre Datenverarbeitungspraktiken effizient und mit der vorgesehenen Funktionalität Ihres Apps übereinstimmen.

Daten-Sicherheit und -Speicherung

Als Nächstes müssen Sie Maßnahmen implementieren, um Benutzerinformationen zu schützen, während Sie an den Grundsätzen der Datenminimierung festhalten.

Einrichten von sicheren Speicher

Die @capacitor/secure-storage Plugin verwendet integrierte 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. @capgo/capacitor-persistente-Konto kann das Kontozustand über Wiederinstallierungen aufrechterhalten. @capgo/capacitor-Datenschutzschirm verdeckt sensitive UI in der App-Wechsler und dem Vorschau-Bildschirm für kürzlich geöffnete 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' });

Datenverschlüsselungsmethoden

Die Hinzufügung einer Client-Seitigen Verschlüsselung ist ein weiterer Schutzschicht. Bibliotheken wie CryptoJS können sensible Informationen verschlüsseln:

// Basic encryption/decryption implementation
const encryptData = (data: string, key: string): string => {
  return CryptoJS.AES.encrypt(data, key).toString();
};

Das regelmäßige Rotieren von Verschlüsselungsschlüsseln ist eine intelligente Möglichkeit, die Sicherheit zu verbessern. Dies stellt sicher, dass selbst wenn ein Schlüssel kompromittiert wird, der Rest der Daten sicher bleibt [2].

Vergleich von Speicheroptionen

Die Auswahl der richtigen Speichersolution hängt von der Sensibilität der Daten ab. Hier ist ein schneller Vergleich:

Funktion Sicherer Speicher Lokaler Speicher
Sicherheitsstufe Hoch (verschlüsselt) Grundlegend
Am besten geeignet Tokens, Passwörter Nicht-sensitive Einstellungen
Leistung Langsamer (wegen Verschlüsselung) Faster Zugriff

Der sichere Speicher API ist eine solide Wahl für die Speicherung kritischer Informationen wie Authentifizierungstoken und persönliche Benutzerdaten [1][4]. Its Verschlüsselungsfähigkeiten sind auch mit den Aufbewahrungsrichtlinien übereinstimmend, wodurch kontrollierter Zugriff auf Daten innerhalb bestimmter Zeitrahmen ermöglicht wird [2].

sbb-itb-f9944d2

Datenlagerzeitlimits

Durch klare Aufbewahrungsrichtlinien wird die Übereinstimmung mit den Grundsätzen der Datenminimierung gefördert, sodass Informationen nicht länger aufbewahrt werden, als notwendig ist.

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 Datenlagerung in Capacitor-Anwendungen:

Datenart Aufbewahrungszeitraum Begründung
Kunden-Daten Bis zur Löschung des Kontos oder 2 Jahren Inaktivität Für die Durchführung von Konto-Operationen erforderlich
Transaktions-Protokolle 7 Jahre Einhaltung finanzieller Vorschriften
Analyse-Daten 90 Tage (anonymisiert), 1 Jahr (Löschung) Unterstützt Funktionserweiterungen
Marketing-Präferenzen Bis zur Abmeldung oder Löschung des Kontos Einhalten von Zustimmungserfordernissen

Hier ist ein Beispiel dafür, wie man Daten mit einer Ablaufdatum programmatisch speichert:

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 Datenlöschung

Die Automatisierung der Datenreinigung kann die Einhaltung von Vorschriften erleichtern und die manuelle Intervention reduzieren. Capacitor's Hintergrundabruf-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 die Speicherung verwenden, können Sie Trigger einrichten, um abgelaufene 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öschungsoptionen

Die Bereitstellung von Benutzern mit Werkzeugen zur Datenverwaltung ist unerlässlich. Hier sind zwei wichtige Funktionen, die Sie implementieren können:

  • Daten spezifisch löschen: Erlassen Sie Benutzern die Möglichkeit, bestimmte Datenarten, 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 für Benutzer, ihre gespeicherten Daten in einer strukturierten Form herunterzuladen.
async function exportUserData(userId: string) {
  // Gathers all user data for export
  const userData = await collectUserData(userId);
  return JSON.stringify(userData);
}

The French data protection authority CNIL Die Aufbewahrungsfristen müssen sich an die Kernfunktion der App anpassen. [3]Diese Grundsätze sind insbesondere für Capacitor-Entwickler relevant und sollten Ihre Aufbewahrungsstrategie leiten.

Zugriffsberechtigungen für Apps

Die sorgfältige Behandlung von Zugriffsberechtigungen ist entscheidend für die Sicherung von Benutzerdaten und die Gewährleistung, dass Ihre App wie vorgesehen funktioniert. Durch die ordnungsgemäße Verwaltung von Berechtigungen können Sie den Zugriff auf nur die Gerätefunktionen beschränken, die Ihre App tatsächlich benötigt. Capacitor’s Permissions API bietet eine einheitliche Ansicht zur Verwaltung von Berechtigungen auf beiden iOS- und Android-Geräten.

Schritte zur Anforderung von Berechtigungen

Stellen Sie sicher, dass die von Ihnen angeforderten Berechtigungen Ihren Datenverarbeitungszielen entsprechen. Hier ist ein Beispiel für die Implementierung der Anforderung von Berechtigungen 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 Anforderung abgelehnt hat, 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();
    }
  }
};

Zeitpunkt der Anforderung von Berechtigungen

Der Zeitpunkt, zu dem Sie Berechtigungen anfordern, ist entscheidend. Eine strategische Zeitplanung kann die Akzeptanzraten der Benutzer erheblich verbessern. Hier ist eine kurze Übersicht über die Zeitstrategien:

Zeitstrategie Beste Verwendungsfälle
Just-in-Time Für bestimmte Funktionen, wenn sie benötigt werden
Kontextbezogen Für nicht-kritische Funktionen
Erster Start Für Kernfunktionen, die vorher erforderlich sind
Verschoben Für optionalen Funktionen später im Benutzerjourney

Beispiel: Sie können die Kamera-Zugriff nur 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();
    }
  }
};

Kontextbezogene Anfragen wie diese können die Akzeptanzraten um 50% gegenüber vorherigen Anfragen erhöhen. [2]. Um eine glatte Erfahrung zu gewährleisten, halten Sie einen Zustandsverfolger für Berechtigungen auf, der Benutzerentscheidungen über Sitzungen hinweg speichert.

Sobald die Berechtigungen bearbeitet sind, können Sie sich auf die Sicherung von Updates konzentrieren, insbesondere für Over-The-Air (OTA)-Deployments.

Sicherheit bei OTA-Updates

Um die Integrität der Daten während der "app updates" zu gewährleisten, ist es entscheidend, sichere OTA-(Over-The-Air)-Update-Prozesse zu verwenden. Diese Updates helfen dabei, unautorisierte Änderungen an der App __CAPGO_KEEP_0__ zu verhindern, die sonst die Grenzen für die Datenerfassung umgehen könnten. Signierung von Update-PaketenDie Signierung von Update-Paketen ist ein kritischer Schritt zur Abwehr unautorisierter code-Änderungen. Hier sind einige wichtige Maßnahmen zur Sicherung von OTA-Updates:

Sicherheitsmaßnahme

Signing update packages is a critical step in protecting against unauthorized code changes. Here are some key measures to secure OTA updates:

Inhaltsschutz AES-Verschlüsselung
Content Protection AES encryption
Lieferungssicherheit HTTPS mit Zertifikatspinning
Update-Integrität Hash-Überprüfung
Versionssicherheit Gesicherte Versionsnummern
Fehlertoleranz Instant-Rollback-Funktion

Capgo Update-System

Capgo Live-Update-Dashboard-Interface

Capgo vereinfacht sichere OTA-Updates für Capacitor-Apps, indem es automatisierte Sicherheitsfunktionen bietet. Hier ist ein Beispiel dafür, wie Sie Capgo’s Update-System in Ihrer App verwenden können:

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 sichert Updates ab und stellt sicher, dass sie validiert und sicher sind, mit Rollover-Optionen im Falle eines Fehlers.

Speichererklärungserfüllung

Die Einhaltung der Richtlinien der App-Stores ist für OTA-Updates erforderlich[1][6][7]Jedes Plattform hat spezifische Anforderungen, um sicherzustellen, dass Updates mit ihren Datenschutz- und Sicherheitsrichtlinien übereinstimmen:

Plattform Einhaltung der Anforderungen
iOS Nur JavaScript- oder Asset-Updates
Android Benutzererlaubnis ist erforderlich
Beide Sicherheitsprüfungen und ordnungsgemäße Dokumentation

Hier ist ein Beispiel für die Implementierung von store-konformen Updates:

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

Hauptschlusse

Die effektive Verwaltung von 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 die Fristen für die Datenspeicherung.
  • Konfigurieren Sie detaillierte Berechtigungssteuerungen.

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 mit den in Abschnitt 2 diskutierten Methoden.
  • Stärken Sie die Speicherungssicherheit wie im Abschnitt 3 beschrieben.
  • Einstellen Sie automatisierte Löschvorgänge basierend auf Abschnitt 4.
  • Errichten und durchsetzen Sie Kontrollen für Berechtigungen wie im Abschnitt 5 detailliert beschrieben.

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.

Fortsetzen Sie von Wie Capacitor Apps Benutzerdaten handhaben.

Wenn Sie __CAPGO_KEEP_0__ Apps verwenden Wie Capacitor Apps Benutzerdaten handhaben um Sicherheit und Compliance zu planen, verbinden Sie es mit Verschlüsselung für die Implementierungsdetails in Verschlüsselung, Compliance 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.

Live-Updates für Capacitor-Apps

Wenn ein Web-Schicht-Bug live ist, liefern Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung vorliegt. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Überprüfungsprozess bleiben.

Loslegen

Neuestes aus unserem Blog

Capgo bietet Ihnen die besten Erkenntnisse, um eine wirklich professionelle mobile App zu erstellen.