Aller au contenu principal

Règles de sécurité DMV

Statut

Document de règles projet — v1.0 — relu le 2026-05-10.

Objectif

Règles de sécurité applicables à l'ensemble de l'écosystème DMV : backend, frontends, infrastructure, base de données et intégrations.

Règles strictes

  • Ne jamais commettre de secret dans Git (API keys, tokens, mots de passe, JWT secrets).
  • Ne jamais exposer APP_KEY, SUPABASE_JWT_SECRET, RESEND_KEY, STRIPE_SECRET_KEY dans les logs, réponses ou code.
  • Ne jamais faire confiance au client pour les autorisations — vérifier côté serveur.
  • Ne jamais désactiver HTTPS en production.
  • Ne jamais exposer APP_DEBUG=true en production.
  • Ne jamais accepter de fichiers sans validation de type et de taille.
  • Ne jamais stocker de données de carte bancaire — déléguer entièrement à Stripe.
  • Ne jamais exposer des colonnes sensibles (ex: stripe_customer_id, stripe_account_id) dans les réponses API non nécessaires.

Authentification et autorisation

  • L'authentification repose sur Supabase Auth + Sanctum — ne pas court-circuiter ce flux.
  • Les tokens Sanctum doivent avoir une expiration configurable.
  • Les devices PlayLoop utilisent des tokens opaques révocables.
  • Le header X-App-Source est obligatoire sur les routes protégées.
  • La RLS PostgreSQL (Supabase) est la dernière ligne de défense côté données.

Données sensibles

DonnéeRègle
Mots de passeNe jamais stocker — déléguer à Supabase Auth
Tokens Sanctum$hidden sur le modèle, jamais dans les logs
stripe_customer_id$hidden, accès restreint
stripe_account_id$hidden, accès restreint
JWT SupabaseNe jamais logger ni retransmettre
Données personnellesConformité RGPD, accès limité au nécessaire

Infrastructure

  • Cloudflare en frontal : protection DDoS, HTTPS forcé.
  • Nginx : headers de sécurité (HSTS, X-Frame-Options, etc.).
  • Certbot : certificats TLS automatiquement renouvelés.
  • Secrets VPS : gérés dans .env hors du dépôt.
  • Accès SSH : clé Ed25519, désactiver l'authentification par mot de passe.

API

  • Rate limiting à implémenter sur les routes publiques et sensibles.
  • Validation stricte de toutes les entrées (Form Requests Laravel).
  • Pas d'endpoint de debug accessible en production.
  • Webhooks Stripe : vérifier la signature avant tout traitement.

Principes directeurs

  • Principe du moindre privilège : chaque composant n'a accès qu'à ce dont il a besoin.
  • Défense en profondeur : plusieurs couches de contrôle (middleware, policy, RLS).
  • Fail secure : en cas de doute, refuser l'accès.
  • Auditabilité : les actions sensibles doivent être journalisées.

Anti-patterns à éviter

  • Secrets en dur dans le code.
  • Endpoints d'administration sans authentification forte.
  • Upload de fichiers sans validation de type et antivirus.
  • Confiance implicite entre modules internes (zero-trust interne).
  • Désactivation de la validation CSRF sans raison (ici non applicable car API stateless).