Aller au contenu principal

Sécurité : contrôle d'accès

Avant la séance (2h)

Si on regarde le top 10 des problèmes de sécurité dans les applis web, on trouve le contrôle d'accès défaillant en position 1.

C'est aussi la source de failles qu'on observe le plus souvent dans les projet des finissants.

La raison principale est que le contrôle d'accès nécessite souvent du travail sans apporter de nouvelles fonctionnalités.

Vous trouverez ici les différentes branches du code du serveur de démo ici:

  • Aucun contrôle d'accès ici
  • Spring Security et authentification ici
  • Spring Security, authentification et extraction de l'utilisateur authentifié courant ici
  • Spring Security, authentification et extraction de l'utilisateur authentifié courant et test de propriété ici
Séance

Nous discuterons des différences entre les différents projets.

Nous verrons également comment rédiger une FAILLE, un EXPLOIT et un CORRECTIF sur l'exemple aucune sécurité.

  • Vérifier si l'utilisateur est authentifié, si ce n'est pas le cas exception
  • Si c'est une lecture, il faut ensuite vérifier que l'utilisateur est le propriétaire (ou a le droit d'accès) sur l'objet demandé
  • Si c'est une écriture, il faut s'assurer qu'on ne peut pas créer des données dans le compte d'un autre utilisateur
Exercices

Exercice 1

Vous devez rédiger FAILLE EXPLOIT et CORRECTIF pour la branche Authentification.

(Optionnel) Exercice 2

Vous devez rédiger FAILLE EXPLOIT et CORRECTIF pour la branche Extraction de l'usager authentifié.

Attention, deux failles existent dans le projet ci-dessus.