Back-end · 4 mondes · 12 étapes

Auth & sécurité

Mots de passe, jetons signés, failles du web et autorisation, écrits de ses mains.

Progression

0 %

0/12 étapes terminées

Avancé · 9 min de lecture

L'autorisation

Être connecté ne donne pas tous les droits

1Définition

L'autorisation décide, pour chaque requête, si l'utilisateur authentifié peut effectuer cette action sur cette ressource. Elle combine des permissions (ce que son rôle permet) et la propriété (à qui appartient la donnée), et se vérifie toujours côté serveur.

2Principes fondamentaux

01

Fermé par défaut

Tout ce qui n'est pas explicitement permis est refusé.

02

Des permissions par action

supprimer:message plutôt que « est admin » : les rôles évoluent, les actions restent.

03

La propriété à chaque requête

Un identifiant dans l'adresse se modifie en une seconde : vérifier à qui appartient la ressource.

04

Ne rien révéler

Même réponse pour « inexistant » et « à quelqu'un d'autre ».

3Exemples pratiques

Filtrer par propriétaire dans la requête

Exemple
1SELECT * FROM quetes WHERE id = $1 AND proprietaire = $2;

La base ne renvoie jamais la quête d'un autre : l'oubli du contrôle devient impossible.

Les politiques de sécurité par ligne

Exemple
1-- PostgreSQL / Supabase2CREATE POLICY "chacun ses quetes" ON quetes3  FOR SELECT USING (proprietaire = auth.uid());

La règle vit dans la base elle-même : même une requête oubliée dans le code ne peut pas la contourner. PostgreSQL le permet nativement, et Supabase en a fait sa règle de base.

4Erreurs courantes

Se fier à l'interface

À éviter

// le bouton Supprimer n'est affiché qu'aux modérateurs

À faire

// la route vérifie la permission

Pourquoi : N'importe qui peut appeler l'adresse directement.

Vérifier l'identité, pas la propriété

À éviter

if (qui) return Response.json(quetes.get(id));

À faire

if (quete?.proprietaire === qui.pseudo) …

Pourquoi : C'est la faille IDOR, la plus fréquente des API.

Des rôles en dur partout

À éviter

if (qui.role === "admin" || qui.role === "modo") …

À faire

if (peut(qui, "supprimer:message")) …

Pourquoi : Au premier nouveau rôle, une route sera oubliée.

5Subtilités à connaître

  • ◆Les identifiants aléatoires (UUID) rendent l'IDOR plus difficile à exploiter, mais ne le corrigent pas : la vérification reste obligatoire.
  • ◆Journaliser les refus d'autorisation aide à repérer quelqu'un qui teste des identifiants.
  • ◆Les actions sensibles (paiement, changement de mot de passe) méritent une ré-authentification, même avec une session valide.

6Vérifie ta compréhension

Question 1/3

Score 0

La faille IDOR consiste à…

Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.