Zum Hauptinhalt springen

API-Sicherheit für die Einhaltung der App-Store-Richtlinien

Lernen Sie die wichtigsten Strategien, um API-Schlüssel zu sichern, um Benutzerdaten zu schützen und die Richtlinien des App-Stores einzuhalten, einschließlich Speicherung, Transport und Verwaltung.

Martin Donadieu

Martin Donadieu

Content-Marketing-Manager

API-Sicherheit für die Einhaltung der App-Store-Richtlinien

Halten Sie Ihre __CAPGO_KEEP_0__-Schlüssel sicher API keys Sicherheit ist für die Schutz von Benutzerdaten und die Einhaltung der App-Store-Regeln kritisch. Das Offenlegen von Schlüsseln kann zu Datenverletzungen, Missbrauch von Diensten und Konto-Kompromittierung führen.

Hauptergebnisse:

  • Vermeiden Sie das Speichern von Schlüsseln in code: Verwenden Sie Umgebungsvariablen oder sichere Dateien.
  • Verwenden Sie Plattform-Tools: iOS-Schlüsselkasten und Android EncryptedSharedPreferences.
  • Verschlüsseln Sie API-Schlüssel: Fügen Sie einem zusätzlichen Sicherheitslevel mit AES-256-Verschlüsselung hinzu.
  • Sicherer Transport: Verwenden Sie immer HTTPS und berücksichtigen Sie die SSL-Zertifikatspinning.
  • Schlüssel überwachen und rotieren: Regelmäßig Schlüssel rotieren und Verwendung für Anomalien überwachen.

Durch die Implementierung dieser Praktiken können Sie Ihre App schützen, den Richtlinien von Apple und Google entsprechen und Ihre Benutzer schützen.

Sichere API Schlüssel Speichermethoden

Schlüssel API aus der Quelldatei Code entfernen

Die direkte Einbeziehung von API Schlüsseln in die Quelldatei code kann zu einer Exposition durch Entkompilierung oder Repository-Lecks führen. Um dies zu vermeiden, sollten Sie diese Ansätze in Betracht ziehen:

  • Verwenden Umgebungsvariablen für lokale Entwicklung.
  • Schlüssel in sichere Konfigurationsdateien speichern, die aus der Versionskontrolle ausgeschlossen sind.
  • Verlassen Sie sich auf remote Konfigurationsdienste um Schlüssel zu verwalten.

Für iOS, überlegen Sie, ob Sie XCConfig-Dateien nutzen können, um Konfigurationen von Ihrem Codebase zu trennen. Auf Android können Sie Schlüssel mit gradle.properties:

# Store in ~/.gradle/gradle.properties
API_KEY=your_key_here

# Reference in build.gradle
buildConfigField "String", "API_KEY", "\"${project.API_KEY}\""

Plattform-Sicherheits-Tools

Take advantage of platform-specific tools to enhance security when storing API keys.

Nutzen Sie Plattform-spezifische Werkzeuge, um die Sicherheit zu verbessern, wenn Sie __CAPGO_KEEP_0__-Schlüssel speichern. Auf iOS verwenden Sie Keychain Services

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)

für sichere Speicherung: VerschlüsselteSharedPreferences für sichere Schlüsselspeicherung:

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
)

Trennen Sie Schlüssel nach Umgebung:

Verwenden Sie unterschiedliche API-Schlüssel für die Entwicklungsumgebung, die Staging-Umgebung und die Produktionsumgebung. Jede Umgebung sollte folgende Merkmale aufweisen:

  • Eine einzigartige Schlüsselrotationsschranke.
  • Verwendungsmeldungen.
  • Sichere Zugriffssteuerungen.

Speichern Sie umgebungsabhängige Schlüssel in sicheren CI/CD-Variablen anstatt in Konfigurationsdateien. Dies sichert die Schlüssel vor, während automatisierte Build-Prozesse unterstützt werden. Zudem sollten sichere Transportmechanismen in Kraft sein, um Schlüssel während der Übertragung zu schützen.

Erweiterte Mobile iOS-Sicherheit – Laufzeitangriffe und API-Schlüssel …

API Schlüssel-Transport-Sicherheit

Die Sicherheit von API-Schlüsseln während der Übertragung ist entscheidend, um Benutzerdaten zu schützen und sich an Anforderungen der App-Stores zu halten. Starke Transport-Sicherheitsmaßnahmen helfen dabei, Angriffe wie man-in-the-middle und unbefugter Zugriff zu verhindern.

HTTPS-Implementierung

Um API-Kommunikation zu sichern, leiten Sie HTTP-Verkehr immer auf HTTPS um. Verwenden Sie TLS 1.3 oder eine späteren Version und erhalten Sie SSL-Zertifikate von einer vertrauenswürdigen Zertifizierungsstelle.

Hier ist ein grundlegender Beispiel, wie Sie HTTPS in einem Node.js- Express-Anwendung umsetzen:

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

Für einen zusätzlichen Schutzschicht sollten Sie über die Implementierung von Zertifikatspinning nachdenken.

Zertifikatspinning

Zertifikatspinning stellt sicher, dass das SSL-Zertifikat des Servers mit einem vertrauenswürdigen Vorkopie übereinstimmt, wodurch der Einsatz von Falschzertifikaten verhindert wird.

Auf iOS können Sie Zertifikatspinning mit der folgenden URLSessionBeispiel-Implementierung

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)
        }
    }
}

In addition to securing transport, encrypt API keys at the application level.

API Schlüsselverschlüsselung

Verschlüsselung von API Schlüsseln fügt einem anderen Sicherheitslevel hinzu. Capgo, zum Beispiel, verwendet Ende-zu-Ende-Verschlüsselung für App-Updates.

“Die einzige Lösung mit wahrer Ende-zu-Ende-Verschlüsselung, andere signieren nur Updates” - Capgo [1]

Um API Schlüssel zu verschlüsseln, verwenden Sie zuverlässige Verschlüsselungsalgorithmen. Hier ist ein Beispiel für die Verschlüsselung eines API Schlüssels mit 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')
    };
}

Kombinieren Sie HTTPS, Zertifikatspinning und Verschlüsselung, um eine starke Verteidigung für Ihre API Schlüssel sicherzustellen.

API Schlüssel-Sicherheitsverwaltung

Die effektive Verwaltung von API Schlüsseln bedeutet, dass man ein Auge auf ihren Einsatz hat, sie regelmäßig rotieren lässt und strengen Zugriffscontrollen Folge leistet. Diese Schritte helfen, sensible Daten zu schützen und sicherzustellen, dass die Anforderungen der App-Stores erfüllt werden.

Verwendung überwachen

Die Überwachung der API Schlüsselverwendung ist entscheidend, um ungewöhnliche Aktivitäten zu erkennen. Verwenden Sie Echtzeit-Analysen, um zu überwachen:

  • Anfragemuster und -volumina
  • Geografische Standorte der Zugriffe
  • Fehlerraten und -typen
  • Authentifizierungsfehler

Hier ist ein Beispiel 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);
        }
    }
};

Schlüsselrotationsschema

Sobald Sie den Umgang mit Ihren Schlüsseln beherrschen, sollten Sie diese regelmäßig rotieren. Automatisierte Rotationen können Ihnen helfen, den Anforderungen der App-Stores nachzukommen. Hier sind einige Rotationstrategien:

  • Notfallrotation: Schalten Sie die Schlüssel sofort aus, wenn Sie einen Sicherheitsvorfall vermuten.
  • Geplante Rotation: Aktualisieren Sie die Produktionschlüssel alle drei Monate.
  • Entwicklungsrotation: Aktualisieren Sie die Schlüssel für Testumgebungen monatlich.

Um Störungen zu minimieren, verwenden Sie einen Übergangszeitraum bei Schlüsseländerungen:

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

Zugriffssteuerung einrichten

Überwachung und Rotation sind nur ein Teil der Gleichung. Sie müssen auch strenge Zugriffssteuerungen durchsetzen. Zuteilen Sie Berechtigungen aufgrund der Notwendigkeit und halten Sie sich an das Grundsatz der geringsten Berechtigung:

const accessControl = {
    validateAccess: (apiKey, requestedOperation) => {
        const keyPermissions = getKeyPermissions(apiKey);
        const environmentType = getCurrentEnvironment();

        return isOperationAllowed(keyPermissions, requestedOperation, environmentType);
    }
};

Überprüfen Sie regelmäßig, wer Zugriff hat, passen Sie die Berechtigungen an, wenn nötig, und setzen Sie automatisierte Warnungen für ungewöhnliche Aktivitäten ein. Diese Maßnahmen helfen Ihnen dabei, eine starke Sicherheit aufrechtzuerhalten, während Sie sich an den Richtlinien der App-Stores halten.

Capgo Sicherheitsmerkmale

Capgo Live Update Dashboard Interface

Capgo stärkt die Anwendungsicherheit, indem es sichere Speicherung und -transportmethoden kombiniert mit fortschrittlichen Funktionen, die in seine Plattform integriert sind.

Capgo Security Architecture

Capgo’s System hat erfolgreich über 23,5 Millionen sichere Updates an 750 Produktionsanwendungen geliefert [1]. Es verwendet End-to-End-Verschlüsselung, sodass nur autorisierte Benutzer Updates entschlüsseln können. Hier ist ein Blick in seine Sicherheitseinstellungen:

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;
    }
};

Diese Konfiguration schützt nicht nur API-Schlüssel, sondern vereinfacht auch die Einhaltung von Anforderungen der App-Stores.

Einhaltung von App-Store-Richtlinien

Capgo stellt sicher, dass Updates schnell und sicher übermittelt werden, mit einem Erfolgssatz von 82% weltweit, wobei 95% der aktiven Benutzer Updates innerhalb von 24 Stunden erhalten. [1]. Seine Funktionen helfen dabei, potenzielle Schwachstellen zu bekämpfen:

  • Automatisierte Schlüsselrotation im Einklang mit den Richtlinien der App-Stores
  • Umgebungsabhängige Bereitstellungssteuerungen
  • Feinjustierte Berechtigungen für die Verwaltung von Updates

Integration von CI/CD-Sicherheitsfunktionen

Capgo arbeitet reibungslos mit CI/CD-Plattformen zusammen, um die API-Schlüssel-Sicherheit zu verbessern. Hier ist ein Beispiel für seine Integration:

capgo_deployment:
    environment:
        - CAPGO_API_KEY: ${SECURED_API_KEY}
        - APP_ENV: production
    security:
        - signature_verification: true
        - key_rotation: enabled
        - access_control: role_based
SicherheitsfunktionImplementierung
SchlüsselverschlüsselungEnd-to-end-Verschlüsselung während der Erstellung und Bereitstellung
ZugriffssteuerungRollenbasierte Berechtigungen für Bereitstellungsstarter
RechnungslegungUmfassende Protokolle aller Bereitstellungsaktivitäten
VersionskontrolleSichere Verfolgung der bereitgestellten Updates

“End-to-end-Verschlüsselung. Nur Ihre Benutzer können Ihre Updates entschlüsseln, niemand sonst.” [1] – Capgo

Zusammenfassung

Die Sicherung von API-Schlüsseln ist entscheidend, um Anforderungen der App-Stores und die Sicherheit von Benutzerdaten zu gewährleisten. Hier ist eine kurze Übersicht über wichtige Praktiken und die nächsten Schritte.

Sicherheitsliste

Die folgende Tabelle hebt wichtige Schritte zur Sicherung von API-Schlüsseln hervor, während gleichzeitig die Standards von Apple und Google eingehalten werden:

SicherheitsmaßnahmeImplementierungsanforderungenZuverlässigkeitsauswirkungen
SpeicherungssicherheitVerwenden Sie Ende-zu-Ende-Verschlüsselung und separate UmgebungenEinhaltung der Apple/Google-Datenschutzregeln
TransportlayerEinhaltung von HTTPS und SSL-ZertifikatspinningSichert Daten während der Übertragung
ZugriffssteuerungWenden Sie rollenbasierte Berechtigungen an und verfolgen Sie Zugriffsprotokolle ZugriffsprotokolleBlockiert unbefugten Zugriff
SchlüsselmanagementRotiert Schlüssel automatisch und verwendet Umgebungs-Spezifische SchlüsselBewahrt starke, laufende Sicherheit

Beziehen Sie sich auf diese Liste als Leitfaden zur Sicherung Ihrer API-Schlüssel.

Nächste Schritte

  1. Audit der aktuellen Implementierung

    Überprüfen Sie Ihre bestehende Schlüssel-Speicherung und -Transportmethoden auf Schwachstellen, insbesondere bei Verschlüsselung und Quellcode code-Exposition.

  2. Implementieren Sie Sicherheitsmaßnahmen

    Führen Sie Ende-zu-Ende-Verschlüsselung durch, um Risiken zu reduzieren und die Anforderungen der App-Stores zu erfüllen.

  3. Ermitteln Sie Überwachungssysteme

    Sorgen Sie für automatisierte Warnungen und führen Sie regelmäßige Audits durch, um die fortgesetzte Sicherheit sicherzustellen.

“App Store-konform” - Capgo [1]

Live-Updates für Capacitor-Anwendungen

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

Los geht's jetzt

Neueste Beiträge aus unserem Blog

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