Rappel théorique

Le contrôle d'accès brisé regroupe toutes les situations où une application authentifie correctement un utilisateur, mais ne vérifie pas (ou mal) que cet utilisateur a réellement le droit d'accéder à la ressource ou à l'action demandée. C'est l'une des catégories les plus fréquentes du Top 10 OWASP : il suffit souvent de modifier un identifiant dans une URL ou un formulaire pour accéder aux données d'un autre utilisateur, voire à des fonctions réservées aux administrateurs.

Deux formes principales

TypeDescriptionExemple
Élévation horizontale
(IDOR - Insecure Direct Object Reference)
Un utilisateur accède aux données d'un autre utilisateur de même niveau en changeant un identifiant référencé directement (souvent un entier auto-incrémenté). profil.php?id=1001profil.php?id=2001 pour lire la commande d'un autre client.
Élévation verticale Un utilisateur accède à des fonctionnalités réservées à un rôle supérieur (administrateur) sans que son rôle ne soit vérifié côté serveur. profil.php?admin=1 affiche un panneau d'administration à n'importe quel utilisateur connecté.

Causes principales

Mesures de protection

Démo vulnérable

Un espace "Mes commandes" qui permet de consulter le détail d'une commande par son identifiant, et un lien vers un "espace administrateur" - sans aucune vérification de propriété ni de rôle.

Accéder à la démo vulnérable

Démo sécurisée

Même interface, mais la commande doit appartenir à l'utilisateur connecté (AND utilisateur_id = :uid) et l'espace administrateur vérifie le rôle en session.

Accéder à la démo sécurisée