Affectation de masse

Affectation de masse

Deux clés JSON supplémentaires, et le solde est à vous de définir.

Qu'est-ce que Affectation de masse?

Une API copie chaque champ du corps d'une requête sur un objet interne, sans liste des champs qu'un client peut définir. Le jeton est honnête et le dossier appartient à l'appelant. Ce qui manque, c'est un contrôle au niveau du terrain. Vous enverrez une mise à jour de profil normale, puis la même mise à jour avec deux clés JSON supplémentaires, et le serveur écrit les deux. Le correctif lit uniquement les champs qu'une modification de profil est censée modifier. Un contrôle de propriété ou un rôle de garde ne peut pas combler une lacune au niveau du terrain.

Ce que vous apprendrez dans Affectation de masse

Affectation de masse — Étapes de la formation

  1. Un membre ordinaire

    Perklane est une application de récompenses pour les détaillants : les membres gagnent des points sur leurs achats et les échangent contre des cartes-cadeaux dans l'application. Bob s'est inscrit en tant que membre normal, avec une identité jetable, pour voir jusqu'où un compte ordinaire peut aller. Son compte n'a rien de spécial : un simple siège de membre avec un jeton qui lit et modifie son propre profil. Il ouvre la console développeur pour voir ce que l'API du compte lui donne.

  2. Un objet, deux types de champs

    La carte de profil de Bob affiche les champs que l'application lui permet de modifier, ainsi que les valeurs que l'application conserve à son sujet. La référence de l'API montre comment l'application lit et enregistre ce profil.

  3. Lire son propre profil

    Tout d'abord, Bob appelle le point de terminaison de la manière dont il est censé être utilisé : il demande à l'API son propre profil, portant son propre jeton de membre dans un en-tête d'autorisation, exactement comme le fait l'application.

  4. Son profil, tous les domaines

    Le serveur renvoie exactement ce qu'il devrait : le propre profil de Bob, car il a demandé son propre enregistrement avec son propre token. Rien ne va pas ici. Mais la forme du dossier mérite d’être examinée de près.

  5. Effectuer une modification normale

    Bob utilise d'abord la fonctionnalité comme prévu : une simple modification de profil. Il bascule la requête vers la méthode de sauvegarde et envoie un nouveau nom d'affichage et un nouveau avatar, les deux champs proposés réellement par le formulaire de profil.

  6. La modification prend

    La sauvegarde a fonctionné. Le nom d’affichage et l’avatar ont changé, et tout le reste est resté en place.

  7. Voir la modification sur son profil

    Avant d'aller plus loin, Bob fait ce que n'importe quel membre ferait après avoir sauvegardé : il recharge la page de son compte. Tout ce que la sauvegarde a écrit dans son dossier est ce que la page lit.

  8. Ajoutez les champs que le formulaire n'affiche jamais

    Même requête, même jeton, même point de terminaison. Bob conserve son nom d'affichage et son avatar dans le corps et ajoute deux clés supplémentaires, les noms de champs exacts que l'appel lu lui a remis : le solde de points et le niveau. Si la sauvegarde fusionne tout ce qu'elle reçoit, elle les écrira également.

  9. Le solde qu'il n'a jamais gagné

    Il a fallu tout cela. Le propre profil de Bob indique désormais qu'il a un demi-million de points et un niveau Platine, défini par rien de plus que deux clés supplémentaires lors d'une modification de profil.

  10. A voir sur son profil

    L'API a renvoyé 200, mais Bob souhaite voir les choses comme n'importe quel membre. Il recharge sa propre console de compte : tout ce que la sauvegarde a écrit dans son enregistrement est ce que la page va relire.

Couverture des référentiels de sécurité

OWASP API Top 10

  • API6:2019 Mass Assignment

CWE

  • CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security