| Version | Supportée |
|---|---|
| 1.x.x | ✅ Oui |
| < 1.0 | ❌ Non |
⚠️ Ne créez PAS d'issue GitHub publique pour signaler une vulnérabilité de sécurité.
- Envoyez un e-mail à l'adresse de sécurité du mainteneur du projet.
- Incluez dans votre message :
- Une description détaillée de la vulnérabilité
- Les étapes pour la reproduire
- L'impact potentiel estimé
- Votre identifiant GitHub (pour vous créditer dans le fix)
- Accusé de réception sous 48 heures
- Évaluation préliminaire sous 5 jours ouvrés
- Correction et divulgation coordonnée sous 30 jours selon la sévérité
Les fichiers suivants ne doivent jamais être commités :
| Fichier | Raison |
|---|---|
.env |
Variables d'environnement (clés API, tokens) |
google-services.json |
Configuration Firebase Android |
GoogleService-Info.plist |
Configuration Firebase iOS |
*.keystore / *.jks |
Keystore de signature Android |
key.properties |
Propriétés de signature Android |
AuthKey_*.p8 |
Clé API App Store Connect |
*.p12 / *.cer |
Certificats iOS |
Ces fichiers sont dans .gitignore. Toute PR qui tente de les inclure sera immédiatement rejetée.
Utilisez toujours .env.example avec des valeurs fictives pour documenter les variables requises. La vraie valeur va dans .env (ignoré par git) ou dans les secrets GitHub Actions.
- Les dépendances sont auditées chaque semaine via le workflow
dependency-audit.yml - Toute vulnérabilité critique dans une dépendance doit être corrigée sous 72h
- Évitez d'ajouter des dépendances sans justification claire dans la PR
Les fichiers générés (*.g.dart, injection.config.dart) sont commités intentionnellement pour éviter que les contributeurs aient besoin de Dart 3.9+ pour faire tourner les tests. Ils doivent être régénérés lors de toute modification des annotations.
// ✅ BON — Stockage chiffré avec flutter_secure_storage
await _storage.write(key: 'access_token', value: token);
// ❌ MAUVAIS — SharedPreferences (non chiffré)
await prefs.setString('access_token', token);Toujours valider les données à la frontière du système (entrées utilisateur, réponses API) :
// Utiliser ValidationFailure pour les erreurs de validation
if (input.isEmpty) return left(const ValidationFailure('Champ requis'));Le package local_auth est intégré. Activez-le dans les écrans sensibles :
// TODO: [TEMPLATE] Activer la biométrie sur les écrans sensibles
final isAuthenticated = await localAuth.authenticate(
localizedReason: 'Confirmez votre identité',
options: const AuthenticationOptions(biometricOnly: true),
);freerasp est disponible en commentaire dans pubspec.yaml. Décommentez-le pour les applications financières ou médicales.