Zum Hauptinhalt springen

Wie Capacitor-Apps mit Benutzerdaten umgehen

Lernen Sie effektive Strategien zum Umgang mit Benutzerdaten in mobilen Apps kennen, mit Schwerpunkt auf Sicherheit, Einhaltung von Vorschriften und Datenverwaltungsbest Practices.

Martin Donadieu

Martin Donadieu

Content Marketer

Wie Capacitor-Apps mit Benutzerdaten umgehen

__CAPGO_KEEP_0__-Apps erfordern eine sichere Speicherung, klare Aufbewahrungsrichtlinien und die Einhaltung von Datenschutzgesetzen wie Capacitor Wie __CAPGO_KEEP_0__-Apps mit Benutzerdaten umgehen Datenminimierung und CCPA. Diese Anleitung erklärt, wie Sie die Datenerfassung minimieren, sensible Informationen sicherstellen und die Berechtigungen effektiv verwalten können. Hier ist eine kurze Übersicht:

  • Datenminimierung: Sammeln Sie nur das notwendige für bestimmte App-Funktionen.
  • Sichere Speicherung: Verwenden Sie Werkzeuge wie das @capacitor/secure-storage Plugin für Verschlüsselung.
  • Datenlöschung: Automatisieren Sie die Löschung auf der Grundlage definer Zeitgrenzen.
  • BenutzerrechteDatenzugriff, -löschen oder -export ermöglichen.
  • Zugriffsrechte-VerwaltungRechte anfordern, wenn der Zugriff verweigert wird, und Alternativen anbieten.
  • OTA-UpdatesÜberprüfen Sie sicher, wie Sie über die Luft über Updates verfügen können, mit Werkzeugen wie Capgo.

Ionic verwenden Capacitor Sichere Speicherung

Capacitor Framework-Dokumentationswebsite

Datenerfassung reduzieren

Ein strukturiertes Vorgehen bei der Überprüfung, Planung und Verwaltung der Datenerfassung ist entscheidend, um mit den Datenschutzvorschriften im Einklang zu bleiben. Durch die Nutzung der integrierten Werkzeuge von Capacitor zur Minimierung der Datenerfassung können Sie praktische Schritte unternehmen, um die Datenpraktiken Ihrer App zu verbessern.

Datenverarbeitungsprüfung

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. Die Software zur Datenschutzfolgenabschätzung (PIA) kann Ihnen dabei helfen, zu bewerten, ob jede einzelne Datenmenge tatsächlich erforderlich ist. Hier ist eine Auflistung der Bereiche, auf die Sie sich konzentrieren sollten:

DatenartÜberprüfungsrichtlinieMaßnahmen
BenutzerinputFormulare und ValidierungEntfernen Sie Felder, die nicht benötigt werden
API-AufrufeAnforderungs-/AntwortdatenFiltern Sie extra Datenfelder aus
SpeicherungGespeichert und persistente DatenSpeicherverwaltung optimieren
AnalytikNutzungsverfolgungNur wesentliche Metriken aufbewahren

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.

// 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 Sie nur die notwendigen Informationen für die grundlegenden App-Funktionen.[1][5].

Daten-Eingabe-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 Sicherheitsfeatures, 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 automatischen Entdeckungstools, um sicherzustellen, dass Ihre Datenverarbeitungspraktiken effizient und mit der beabsichtigten Funktionalität Ihres Apps übereinstimmen.

Daten-Sicherheit und -Speicherung

Sobald Sie Ihre Datenverarbeitungsgrenzen definiert haben, ist es entscheidend, Maßnahmen zur Sicherung von Nutzerinformationen umzusetzen, während Sie sich an Grundsätzen der Datenminimierung halten.

Einrichten von sicheren Speicher

Das @capacitor/secure-storage Plugin verwendet eingebaute Sicherheitsfunktionen wie iOS-Schlüsselkasten und Android-Keystore, um sensible Daten zu schützen [1].

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 von Client-Seitensicherung 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();
};

Regelmäßige Rotation 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].

Speicheroptionen vergleichen

Die Auswahl der richtigen Speichersolution hängt davon ab, wie sensibel die Daten sind. Hier ist eine schnelle Übersicht:

FunktionSichere SpeicherungLokale Speicherung
SicherheitsstufeHoch (verschlüsselt)Grundlegend
Am besten fürTokens, PasswörterNichtsensiblen Einstellungen
LeistungLangsamer (wegen Verschlüsselung)Schneller Zugriff

Der sichere Speicher API ist eine solide Wahl für die Speicherung kritischer Informationen wie Authentifizierungs-Token und persönlicher Benutzerdaten [1][4]. Seine Verschlüsselungsvermögen passen auch mit Aufbewahrungsrichtlinien überein, wodurch kontrollierter Zugriff auf Daten innerhalb von spezifizierten Zeitrahmen ermöglicht wird [2].

sbb-itb-f9944d2

Daten Speicher Zeitlimits

Durch die Festlegung von Datenretentionsrichtlinien wird die Übereinstimmung mit den Grundsätzen der Datenminimierung gefördert, sodass Informationen nicht länger als notwendig gespeichert werden

Speicher Zeitregeln

Verschiedene Arten von Benutzerdaten sollten aufgrund ihres Zwecks und ihrer Sensibilität definierte Aufbewahrungszeiträume haben. Hier ist ein vorgeschlagenes Framework für die Verwaltung von Datenretention in Capacitor Anwendungen:

DatenartAufbewahrungsfristBegründung
Kunden-DatenBis zur Löschung des Kontos oder 2 Jahren InaktivitätFür accountbezogene Operationen erforderlich
Transaktionsprotokolle7 JahreEinhaltung finanzieller Vorschriften
Analyse-Daten90 Tage (anonymisiert), 1 Jahr (Löschung)Unterstützt Verbesserungen von Funktionen
Marketing-EinstellungenBis zum Ausschließen oder Löschung des KontosEinhält sich an Anforderungen zur Zustimmung

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 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 veraltete Aufzeichnungen 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

Daten zur Verfügung zu stellen, die Benutzer können, um ihre Daten zu verwalten, ist entscheidend. Hier sind zwei wichtige Funktionen, die Sie implementieren können:

  • Spezifische Daten löschen: Benutzer ermöglichen, bestimmte Datenarten, die mit ihrem Account verbunden sind, zu entfernen.
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]
    );
  }
}
  • Datenexport: Benutzer ermöglichen, 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);
}

Die französische Datenschutzbehörde CNIL Höhere 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.

Anwendungsrechte-Steuerung

Die sorgfältige Behandlung von Anwendungsrechten ist entscheidend, um Benutzerdaten zu schützen und sicherzustellen, dass die Anwendung wie vorgesehen funktioniert. Durch die ordnungsgemäße Verwaltung von Rechten können Sie den Zugriff auf nur die Gerätefunktionen einschränken, die Ihre Anwendung tatsächlich benötigt. Capacitor’s Rechte-API bietet eine einheitliche Ansicht zur Verwaltung von Rechten auf beiden iOS- und Android-Geräten.

Schritte zur Anfrage von Rechten

Stellen Sie sicher, dass die Rechte, die Sie anfragen, mit den Datenverteilungszielen Ihrer Anwendung übereinstimmen. Hier ist ein Beispiel für die Implementierung der Rechteanfragen in einer Capacitor-Anwendung:

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 von abgelehnten Berechtigungen

Wenn ein Benutzer eine Berechtigungsanfrage ablehnt, stellen Sie klare Alternativen und Anweisungen bereit. 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 Berechtigungsanfrage

Wenn Sie Berechtigungen anfragen, spielt der Zeitpunkt eine Rolle. Eine strategische Zeitplanung kann die Akzeptanzraten der Benutzer erheblich verbessern. Hier ist eine kurze Übersicht über die Zeitplanungsstrategien:

ZeitplanungsstrategieBeste Verwendung
Just-in-TimeFür spezifische Funktionen, wenn erforderlich
KontextuellFür nicht-kritische Funktionen
Erstes StartenFür Kernfunktionen, die vorher erforderlich sind
VerzögertFür optional Funktionen später im Benutzererlebnis

Zum Beispiel können Sie die Zugriffsberechtigung auf die Kamera nur dann anfordern, wenn der Benutzer eine Aktion wie das Aufnehmen eines Fotos auslöst:

const captureImage = async () => {
  const userStartedCapture = true;

  if (userStartedCapture) {
    const granted = await permissionHandler('camera');

    if (granted) {
      await startCamera();
    } else {
      showUploadOption();
    }
  }
};

Im Kontext dieser Anforderungen können die Zustimmungsquoten um bis zu 50% gegenüber vorherigen Anforderungen steigen [2]. Um ein glattes Erlebnis zu gewährleisten, müssen Sie einen Zustandsverfolger für die Berechtigungen einrichten, der die Benutzerentscheidungen über mehrere Sitzungen hinweg speichert.

Nachdem die Berechtigungen gehandhabt wurden, können Sie sich auf die Sicherstellung von Updates konzentrieren, insbesondere für drahtlose (OTA) Bereitstellungen.

Sicherheit bei OTA-Updates

Um die Datenintegrität während der Anwendungsaktualisierungenzu gewährleisten, ist es entscheidend, sichere OTA-Update-Prozesse zu verwenden. Diese Updates helfen dabei, unautorisierte Änderungen an der Anwendung code zu verhindern, die sonst die Grenzen für die Datenerfassung umgehen könnten.

Signierung von Updatepaketen

Die Signierung von Updatepaketen ist ein entscheidender Schritt zur Sicherstellung gegen unautorisierte Änderungen an der Anwendung code. Hier sind einige wichtige Maßnahmen, um OTA-Updates zu sichern:

SicherheitsmaßnahmeWie es funktioniert
InhaltsschutzAES-Verschlüsselung
LieferungssicherheitHTTPS mit Zertifikatspinning
Update-IntegritätHash-Verifizierung
VersionssicherheitSignierte Versionsnummern
FehlschlagrückkehrInstant-Rollback-Fähigkeit

Capgo Aktualisierungssystem

Capgo Live-Update-Dashboard-Interface

Capgo vereinfacht sichere OTA-Updates für Capacitor-Apps, indem automatisierte Sicherheitsfunktionen angeboten werden. Hier ist ein Beispiel dafür, wie Sie das Capgo-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 sicheren sind, mit Rollover-Optionen im Falle eines Scheiterns.

Zustimmungspolitik des Ladens

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:

PlattformZustimmungserfordernisse
iOSNur JavaScript- oder Asset-Updates
Android__CAPGO_KEEP_0__ muss vom Benutzer eingeholt werden
BeideSicherheitsprü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

Hauptergebnisse

Der effektive Umgang mit Benutzerdaten beinhaltet die Combination dieser Kernstrategien:

  • Erheben Sie nur die notwendigen Daten.
  • Verwenden Sie Plattform-spezifische Verschlüsselung, um sie zu sichern.
  • Automatisieren Sie Fristen für die Datenspeicherung.
  • Stellen Sie detaillierte Berechtigungssteuerungen ein.

Diese Schritte arbeiten zusammen, um die Einhaltung von der Zeitpunkt der Datenerfassung an 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 Speicherungssicherheit wie in Abschnitt 3 dargelegt.
  • Sorgen Sie für automatisierte Löschungsprozesse auf der Grundlage von Abschnitt 4.
  • Ermöglichen Sie und durchsetzen Sie Kontrollen für Berechtigungen wie in Abschnitt 5 detailliert beschrieben.

Mit Capgo können Teams, die sich um OTA-Updates kümmern, integrierte Sicherheitstools nutzen, die sich mit diesen Bemühungen decken:

Für Teams, die sich um OTA-Updates kümmern, bietet Capgo integrierte Sicherheitstools, die sich mit diesen Bemühungen decken:

  • End-to-end-Verschlüsselung um Update-Pakete zu sichern.
  • Echtzeit-Monitoring für die schnelle Behebung potenzieller Sicherheitsbedrohungen.
Live-Updates für Capacitor-Apps

Wenn ein Bug im Weblayer live ist, liefern Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung vorliegt. Die Benutzer erhalten das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Loslegen

Neueste von unserem Blog

Capgo bietet Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle Mobilanwendung zu erstellen.