Sécurité des APIs : contrôler l'accès à chaque objet
Être authentifié ne donne pas accès à toutes les ressources : comprendre et prévenir une faille d'autorisation fréquente.
Le piège de l'identifiant
Supposons une route qui retourne une facture par son identifiant. Elle exige une session valide, mais ne vérifie pas que la facture appartient au compte courant. Un utilisateur connecté peut alors essayer un autre identifiant et obtenir une donnée qui ne lui appartient pas. OWASP classe ce problème parmi les risques majeurs des APIs : l'autorisation au niveau de l'objet.
Une vérification complète
L'accès doit dépendre de l'identité, du rôle éventuel, de la ressource visée et de l'action demandée. La vérification s'effectue côté serveur pour chaque lecture, modification ou suppression. Dans une application multi-tenant, la requête doit aussi respecter la frontière du tenant ; cacher un bouton dans l'interface n'est pas une protection.
Je teste ce contrôle avec deux comptes distincts : le premier crée une ressource, le second tente de la lire et de la modifier. Les deux demandes doivent être refusées si aucun partage n'est prévu. Je vérifie également qu'un utilisateur ordinaire ne peut pas appeler une fonction réservée à l'administration.
Ce sujet se traite mieux lors de la conception des politiques d'accès qu'au moment d'un audit final.
Pour aller plus loin : OWASP API Security Top 10.