1. Toujours authentifier

  • JWT signé, durée raisonnable, refresh géré.
  • Interdiction des endpoints anonymes non nécessaires.
  • Rôles / claims pour restreindre les accès.

2. Valider toutes les entrées

  • ModelState.IsValid systématique.
  • Attributs [Required], [MaxLength], [Range], etc.
  • Nettoyage / contrôle des fichiers uploadés.

3. Gérer les erreurs proprement

  • Middleware global d’exception.
  • Jamais de stack trace brute vers le client.
  • Codes HTTP cohérents (400, 401, 403, 404, 500).

4. Logs & audit

  • Logging structuré (Serilog, etc.).
  • Traces sur les actions sensibles.
  • Corrélation ID pour suivre une requête.

5. HTTPS & configuration

  • HTTPS obligatoire.
  • Secrets dans variables d’environnement / KeyVault,
    pas dans le code.

Cette checklist est celle que j’applique sur mes projets clients.
Une API .NET bien sécurisée, c’est surtout une discipline et des automatismes.