Guide secrets

Trouver les secrets exposés des apps mobiles

Toute valeur livrée au client est lisible ; `.env` ou obfuscation ne la protège pas.

LaunchLint Academy

17 min de lectureVérifié par l’équipe éditoriale de LaunchLint
Dépôt mobile avec clé exposée, proxy serveur sûr et rotation
Toute valeur livrée au client mobile doit être considérée lisible. `.env`, EAS Secrets ou obfuscation ne protègent pas une valeur intégrée.
TL;DR

La réponse courte

  • Toute valeur livrée au client mobile doit être considérée lisible. `.env`, EAS Secrets ou obfuscation ne protègent pas une valeur intégrée.
  • Séparez identifiants publics et credentials privés, déplacez les privilèges au serveur et faites tourner tout secret exposé.
  • Cette checklist n'est pas un exercice unique. Exécutez-la avant le premier upload, après chaque changement pertinent de dépendance ou configuration et juste avant la publication. Développement, produit et responsable de la console évaluent le même build. Les signaux statiques sont reproductibles, mais ne prouvent ni le runtime ni les réponses backend. Ajoutez des tests de l'artefact signé, les déclarations officielles et une décision tracée.

1. Inventorier les secrets

Listez clés, credentials, tokens, signature et identifiants avec responsable.

Traitez inventorier les secrets comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de inventorier les secrets identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

2. Examiner l'historique

Cherchez code, configuration, CI, exemples, assets, patches et Git.

Traitez examiner l'historique comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de examiner l'historique identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

3. Séparer build et runtime

Un secret reste serveur seulement s'il n'est jamais écrit dans le client.

Traitez séparer build et runtime comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de séparer build et runtime identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

4. Traiter les variables publiques

`EXPO_PUBLIC_` et équivalents sont lisibles dans le bundle.

Traitez traiter les variables publiques comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de traiter les variables publiques identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

5. Déplacer les privilèges

Clés privées et actions admin passent par un backend authentifié.

Traitez déplacer les privilèges comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de déplacer les privilèges identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

6. Limiter les clés publiques

Restreignez par identité, domaine, API, quota et environnement.

Traitez limiter les clés publiques comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de limiter les clés publiques identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

7. Faire tourner et analyser

Révoquez, remplacez et inspectez l'usage ; cacher le nom ne suffit pas.

Traitez faire tourner et analyser comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de faire tourner et analyser identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

8. Automatiser le gate

Combinez motifs, entropie, allowlist et examen humain.

Traitez automatiser le gate comme une propriété vérifiable du candidat exact. Reliez la décision au fichier, au champ du store ou à un test reproductible. Séparez résultat attendu et observé, nommez un responsable et stoppez la publication tant qu'une contradiction de sécurité ou de review subsiste.

Preuves de validation de la release

  • État de production de automatiser le gate identifié
  • Fichier ou champ responsable relié
  • Contrôle rejoué sur un appareil propre
  • Écarts iOS et Android documentés
  • Chaque question a responsable et date
  • Preuve sans secret ni donnée personnelle

Questions fréquentes

`.env` est-il sûr ?

Non si la valeur arrive dans le client.

EAS Secrets protège-t-il ?

Le build, pas une valeur intégrée.

L'obfuscation suffit-elle ?

Non. Elle ne gère pas les secrets.

Que faire après découverte ?

Révoquer, remplacer, enquêter et repenser.

Sources officielles

Cet article s’appuie sur les sources officielles ci-dessous. Les règles peuvent évoluer : vérifiez leur version actuelle avant chaque soumission.