Gardez vos API clés La sécurité est cruciale pour protéger les données des utilisateurs et respecter les règles des magasins d'applications. L'exposition des clés peut entraîner des fuites de données, des abus de services et des compromis de compte.
Rappels clés :
- Évitez de stocker les clés dans codeUtilisez les variables d'environnement ou des fichiers sécurisés.
- Utilisez les outils de plateforme :Clés de chaîne de clés iOS et Android SharedPreferences chiffrés.
- Chiffrez les clés API :Ajoutez une couche supplémentaire de sécurité avec le chiffrement AES-256.
- Transport sécurisé :Utilisez toujours HTTPS et considérez la mise en cache d'un certificat SSL.
- Surveiller et faire pivoter les clés : Faites pivoter régulièrement les clés et suivez l'utilisation pour détecter les anomalies.
En mettant en œuvre ces pratiques, vous pouvez sécuriser votre application, vous conformer aux lignes directrices d'Apple et de Google, et protéger vos utilisateurs.
Méthodes de stockage de clés sécurisées API
Supprimer les clés API des sources de code Code
Inclure directement les clés API dans les sources de code code peut entraîner une exposition par décompilation ou par fuites de dépôt. Pour éviter cela, considérez ces approches :
- Utiliser les variables d'environnement pour le développement local.
- Stockez les clés dans des fichiers de configuration sécurisés qui sont exclus du contrôle de version.
- Relyez-vous sur les services de configuration à distance pour gérer les clés.
Pour iOS, envisagez d'utiliser les fichiers XCConfig pour séparer les configurations de votre base de code. Sur Android, vous pouvez gérer les clés à l'aide des gradle.properties:
# Store in ~/.gradle/gradle.properties
API_KEY=your_key_here
# Reference in build.gradle
buildConfigField "String", "API_KEY", "\"${project.API_KEY}\""
Outils de sécurité de plateforme
Profitez des outils spécifiques à la plateforme pour améliorer la sécurité lors du stockage des clés API.
Sur iOS, utilisez Services de stockage de clés pour un stockage sécurisé :
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)
Sur Android, exploitez EncryptedSharedPreferences pour un stockage de clés sécurisé :
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
)
Clés séparées par environnement
Utilisez des clés API différentes pour les environnements de développement, de pré-production et de production. Chaque environnement devrait avoir :
- Un calendrier de rotation de clés unique.
- Suivi d'utilisation.
- Contrôles d'accès stricts.
Stockez les clés spécifiques à l'environnement dans les variables de CI/CD sécurisées au lieu de fichiers de configuration. Cela garantit que les clés restent protégées tout en supportant les processus de construction automatisés. De plus, assurez-vous que des mécanismes de transport sécurisés sont en place pour protéger les clés pendant la transmission. Sécurité mobile avancée iOS – Attaques en temps de exécution et clés __CAPGO_KEEP_0__ …
Advanced Mobile iOS Security – Runtime Attacks & API Key …
API Clé de Transport de Sécurité
La protection des clés API pendant le transit est essentielle pour protéger les données des utilisateurs et se conformer aux exigences des magasins d'applications. Des mesures de sécurité de transport solides aident à prévenir les attaques comme la prise en otage dans le milieu et l'accès non autorisé.
Mise en œuvre de HTTPS
Pour sécuriser la communication API, redirigez toujours le trafic HTTP vers HTTPS. Utilisez TLS 1.3 ou une version ultérieure et obtenez des certificats SSL d'une autorité de certification fiable.
Voici un exemple de base de mise en œuvre de HTTPS dans un application Node.js Express : Pour une couche supplémentaire de protection, envisagez de mettre en œuvre la pinning de certificats. Pinning de Certificats SSL
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();
});
La pinning de certificats garantit que le certificat SSL du serveur correspond à une copie fiable, empêchant l'utilisation de certificats faux.
Sur iOS, vous pouvez mettre en œuvre la pinning de certificats en utilisant
Voici un exemple :
For an added layer of protection, consider implementing certificate pinning. URLSessionOn iOS, you can implement certificate pinning using
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)
}
}
}
En plus de sécuriser le transport, chiffrer les clés API au niveau de l'application.
API Clé de Chiffrement
Chiffrer les clés API ajoute une autre couche de sécurité. Capgo, par exemple, utilise la chiffrure de bout en bout pour les mises à jour d'applications.
“La seule solution avec une chiffrure de bout en bout vraie, les autres ne font que signer les mises à jour” - Capgo [1]
Pour chiffrer les clés API, utilisez des algorithmes de chiffrure fiables. Voici un exemple de chiffrement d'une clé API avec AES-256-GCM dans 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')
};
}
La combinaison de HTTPS, de la fixation de certificats et de la chiffrure garantit une défense solide pour les clés API.
API Gestion de la Sécurité des Clés
Gérer efficacement les clés API signifie garder un œil attentif à leur utilisation, les faire tourner régulièrement et appliquer des contrôles d'accès stricts. Ces étapes aident à protéger les données sensibles et à s'assurer de la conformité aux exigences des magasins d'applications.
Suivi d'utilisation
Surveiller l'utilisation des clés API est crucial pour détecter toute activité anormale. Utilisez des analyses en temps réel pour surveiller :
- Modèles et volumes de requêtes
- Localisations géographiques d'accès
- Taux et types d'erreurs
- Échecs d'authentification
Voici un exemple en 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);
}
}
};
Calendrier de rotation de clés
Une fois que vous avez une bonne compréhension de l'utilisation, assurez-vous de faire tourner régulièrement vos clés. Les processus de rotation automatisés peuvent vous aider à rester conforme aux exigences des magasins d'applications. Voici quelques stratégies de rotation :
- Rotation d'urgence : Désactiver immédiatement les clés si vous soupçonnez une intrusion.
- Rotation planifiée : Mettre à jour les clés de production tous les trimestres.
- Rotation de développement : Rafraîchir les clés pour les environnements de test chaque mois.
Pour minimiser les perturbations, utilisez une période de transition lors des changements clés :
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()
};
Configuration des Contrôles d'Accès
La surveillance et la rotation ne constituent qu'une partie de l'équation. Vous avez également besoin d'appliquer des contrôles d'accès stricts. Attribuez des permissions en fonction de la nécessité et respectez le principe de la moindre privilègue :
const accessControl = {
validateAccess: (apiKey, requestedOperation) => {
const keyPermissions = getKeyPermissions(apiKey);
const environmentType = getCurrentEnvironment();
return isOperationAllowed(keyPermissions, requestedOperation, environmentType);
}
};
Examinez régulièrement qui a accès, ajustez les permissions si nécessaire et configurez des alertes automatiques pour les activités inhabituelles. Ces mesures vous aideront à maintenir une sécurité solide tout en restant conforme aux règles des magasins d'applications.
Capgo Fonctionnalités de Sécurité

Capgo renforce la sécurité des applications en combinant des méthodes de stockage et de transport sécurisées avec des fonctionnalités avancées intégrées à sa plateforme.
Capgo Architecture de Sécurité
Capgo a réussi à livrer plus de 23,5 millions de mises à jour mises à jour sécurisées à 750 applications de production [1]. Il utilise la cryptage de bout en bout, ce qui garantit que seuls les utilisateurs autorisés peuvent déchiffrer les mises à jour. Voici un aperçu de sa configuration de sécurité :
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;
}
};
Cette conception ne garantit pas seulement les clés API mais simplifie également le respect des exigences des magasins d'applications.
Conformité aux Directives du Magasin d'Application
Capgo garantit que les mises à jour sont livrées rapidement et de manière sécurisée, avec un taux de réussite mondial de 82 %, avec 95 % des utilisateurs actifs recevant les mises à jour dans les 24 heures [1]. Ses fonctionnalités aident à relever les vulnérabilités potentielles :
- Rotation automatique des clés alignée sur les politiques des magasins d'applications
- Contrôles de déploiement conçus pour les environnements spécifiques
- Permissions détaillées pour gérer les mises à jour
Intégration de la sécurité CI/CD
Capgo fonctionne en toute harmonie avec les plateformes CI/CD pour renforcer la protection des clés API. Voici un exemple de son intégration :
capgo_deployment:
environment:
- CAPGO_API_KEY: ${SECURED_API_KEY}
- APP_ENV: production
security:
- signature_verification: true
- key_rotation: enabled
- access_control: role_based
| Fonctionnalité de sécurité | Mise en œuvre |
|---|---|
| Chiffrement clé | Chiffrement end-to-end pendant la construction et la mise en production |
| Contrôle d'accès | Permissions basées sur le rôle pour les déclencheurs de déploiement |
| Journalisation d'audit | Journaux complets de toutes les activités de déploiement |
| Contrôle de version | Suivi sécurisé des mises à jour déployées |
“Chiffrement end-to-end. Seuls vos utilisateurs peuvent déchiffrer vos mises à jour, personne d'autre.” [1] - Capgo
Résumé
Il est essentiel de sécuriser les clés API pour répondre aux exigences des magasins d'applications et protéger les données des utilisateurs. Voici un aperçu rapide des pratiques clés et des étapes à suivre.
Liste de vérification de sécurité
La table ci-dessous met en évidence les étapes importantes pour protéger les clés API tout en restant aligné sur les normes d'Apple et de Google :
| Mesure de sécurité | Exigences d'implémentation | Impact de la conformité |
|---|---|---|
| Sécurité de stockage | Utilisez l'encryption de bout en bout et des environnements séparés | Conformité aux règles de protection des données d'Apple/Google |
| Couche de transport | Exigez HTTPS et utilisez la mise en cache de certificat SSL | Protège les données pendant la transmission |
| Contrôle d'accès | Appliquez des permissions basées sur le rôle et suivez les journaux d'accès accès logs | Empêche l'accès non autorisé |
| Gestion des clés | Rotez automatiquement les clés et utilisez des clés spécifiques à l'environnement | Maintient une sécurité solide et continue |
Voir ce checklist comme guide pour sécuriser vos API clés.
Étapes suivantes
-
Auditez la mise en œuvre actuelle
Révisez vos méthodes de stockage et de transport de clés existantes pour les vulnérabilités, en vous concentrant particulièrement sur l'encryption et l'exposition de la source code.
-
Mettre en œuvre des mesures de sécurité
Appliquer une encryption de bout en bout pour réduire les risques et répondre aux exigences des magasins d'applications.
-
Établir des systèmes de surveillance
Configurer des alertes automatiques et effectuer des audits réguliers pour s'assurer de la sécurité continue.
“Compatibilité avec l'App Store” - Capgo [1]