Aller au contenu principal

TP3 : CTF et suppression

Repository Git ​2 points

Un minimum de 4 commits de tailles comparables. Ces points sont conditionnés à la remise d'au moins un commit par 2 séances de cours.

Améliorations
Gestion des erreurs ​2 points

Votre application doit afficher des messages d'erreur significatifs (qui indiquent une solution quand c'est possible). Cela inclut les cas où l'utilisateur donne de mauvaises données (validation, trop court, existant, etc.), et les erreurs d'accès au serveur. Cet aspect sera corrigé en détail sur :

  • la création d'un compte : message si les mots de passe ne concordent pas, si l'accès réseau est impossible, si le nom utilisateur est déjà pris, etc.
  • l'écran de la liste de tâches : message si pas de réseau (vous devez fournir une option pour recharger les données dans ce cas).
RAPPEL

Tous les messages d'erreur doivent être traduits pour les 2 langues.

Attente dans l'interface graphique ​2 points

Note : vous pouvez modifier le délai d'attente du serveur dans le fichier ConfigHTTP.java en changeant la valeur dans le Thread.sleep.

Quand vous envoyez une requête au serveur, la réponse n'est pas immédiate. Pour une action, vous devez :

  • Indiquer à l'utilisateur qu'il se passe quelque chose
  • Désactiver l'action qu'il vient de déclencher pour éviter que l'utilisateur puisse envoyer des requêtes

Pour chaque consultation (liste et consultation) vous devez :

  • Indiquer à l'utilisateur que le chargement est en cours
  • Afficher les informations quand elles sont reçues

L'interface doit revenir dans un état fonctionnel après le chargement, que le résultat soit correct ou en cas d'erreur.

RAPPEL

Tous les messages doivent être traduits pour les 2 langues.

Suppression des tâches
Suppression dans le serveur

4 points Vous devez modifier le serveur fourni pour permettre la suppression d'une tâche. Il faut :

  • Ajouter une route dans un controleur.
  • Ajouter une méthode dans le service pour supprimer une tâche.
  • Utiliser le repository pour la suppression.

1 point Vous devez implanter le contrôle d'accès : vérifier que l'utilisateur est bien le propriétaire de la tâche avant de la supprimer.

2 points Vous devez produire des tests unitaires pour la suppression d'une tâche au niveau de la couche de service :

  • Vérifier que la suppression fonctionne avec un ID correct :
    • Créer un utilisateur, lui ajouter une tâche, vérifier qu'elle a été ajoutée, la supprimer, vérifier qu'elle n'est plus là.
    • ATTENTION : re-récupérez l'utilisateur après lui avoir ajouté une tâche, avant de la supprimer.
  • Vérifier que la suppression ne fonctionne pas avec un ID incorrect.
  • Vérifier que le contrôle d'accès fonctionne (Bob ne peut pas supprimer une tâche d'Alice) :
    • Créer Alice, lui ajouter une tâche, vérifier qu'elle a été ajoutée.
    • Créer Bob, essayer de supprimer la tâche d'Alice, vérifier que ça ne fonctionne pas.
Suppression dans le client

Vous pouvez choisir l'endroit dans l'interface où implanter la suppression (dans la liste, dans la consultation) ainsi que le moyen de déclencher la suppression (bouton, swipe, etc.).

2 points La suppression est implantée dans l'interface graphique. L'interface se met à jour après la suppression.

1 point Vous devez afficher un message d'erreur approprié (et traduit) si la tâche à supprimer n'existe plus (par exemple elle a déjà été supprimée sur un autre appareil).

Capture du drapeau / faille de sécurité du serveur

Notre serveur contient une faille de contrôle d'accès sur la mise à jour du pourcentage d'une tâche. Vous devez trouver un moyen d'exploiter cette faille. Pendant la séance 13.2 vous devrez montrer que vous êtes capable de modifier une tâche qui ne vous appartient pas.

  1. 3 points Vous devez montrer pendant la séance 13.2 que vous êtes capable de modifier (une seule) tâche qui ne vous appartient pas, selon les modalités données en classe.
  2. 1 point UNIQUEMENT SI VOUS AVEZ RÉUSSI À EXPLOITER LA FAILLE, expliquez en détails les étapes qui vous ont permis d'exploiter la faille de sécurité dans un fichier nommé faille.md à la racine de votre projet. Mettez votre fichier explicatif à la racine de votre TP3.
  3. 3 points Vous devez corriger la faille dans le serveur modifié que vous remettez avec votre TP3.
Fonctionnement global ​5 points négatifs

L'application fonctionne sans plantage et correctement. Ce pointage fonctionne en négatif. Si l'application fonctionne correctement en tout temps, vous conservez votre note. Dans le cas contraire, vous perdez des points avec un maximum de 5.

  • Plantage de l'application -1 point
  • Interface illisible -1 point
  • Information affichée incohérente -1 point
  • Autre cas...