Aller au contenu
Filtrer les règles par style d’implémentation
Style
Les deux styles
Sévérité
bloquante
S’applique à
  • Adapters driving
  • Use cases (application)

UC-06 · L’autorisation se vérifie côté serveur, pour chaque use case ​

Style
Les deux styles
Sévérité
bloquante
S’applique à
  • Adapters driving
  • Use cases (application)

Signal ​

  • Un use case sensible protégé seulement par l’interface, qui cache le bouton ou le menu.
  • Un endpoint ou un use case sans vérification d’autorisation, alors que l’opération est réservée à un rôle.
  • Un use case appelé depuis plusieurs points d’entrée (REST, messagerie, ligne de commande, job), dont un seul vérifie les droits.

Pourquoi ​

La sécurité fait partie du travail des use cases, avec la coordination des tâches et la transaction. Les opérations sensibles, comme bloquer les débits d’un wallet ou relever un plafond de retrait, sont protégées par une règle d’autorisation sur le use case.

L’interface cache la navigation aux utilisateurs qui n’y ont pas droit, mais cela n’arrête pas un attaquant. La règle côté serveur, si.

Exceptions ​

Aucune.

Correction ​

Une règle d’autorisation explicite par use case, vérifiée côté serveur, et un test qui appelle le use case sans la permission requise.

Adaptation ​

En NestJS, les guards s’appliquent aux controllers, aux resolvers et aux gateways, pas aux providers. Un guard sur un controller ne protège pas le même use case quand un job ou un consumer de messages l’appelle. Mettre un guard sur chaque point d’entrée, ou vérifier explicitement dans le use case.

Voir aussi ​

SRV-05 (pas de contrôle d’accès dans un domain service), CTX-10 (les droits se vérifient en amont du domaine), ENT-09 (en multi-tenant, le tenant de l’appelant limite aussi l’accès).