Assegnazione di massa

Assegnazione di massa

Due chiavi JSON extra e il saldo sarà tuo.

Cos’è Assegnazione di massa?

Un'API copia ogni campo nel corpo della richiesta su un oggetto interno, senza alcun elenco dei campi che un client può impostare. Il token è onesto e il record appartiene al chiamante. Ciò che manca è un controllo a livello di campo. Invierai un normale aggiornamento del profilo, quindi lo stesso aggiornamento con due chiavi JSON aggiuntive e il server le scriverà entrambe. La correzione legge solo i campi che una modifica del profilo intende modificare. Un controllo della proprietà o una guardia di ruolo non possono colmare un divario a livello di campo.

Cosa imparerai in Assegnazione di massa

Assegnazione di massa — Fasi della formazione

  1. Un membro ordinario

    Perklane è un'app di premi al dettaglio: i membri guadagnano punti sugli acquisti e li riscattano con buoni regalo nell'app. Bob si è iscritto come membro normale, con un'identità usa e getta, per vedere fino a che punto può spingersi un account normale. Il suo account non è niente di speciale: un semplice posto membro con un token che legge e modifica il suo profilo. Apre la console per sviluppatori per vedere cosa gli offre l'API dell'account.

  2. Un oggetto, due tipi di campo

    La scheda del profilo di Bob mostra i campi che l'app gli consente di modificare e accanto a essi i valori che l'app conserva su di lui. Il riferimento API mostra come l'app legge e salva quel profilo.

  3. Leggi il suo profilo

    Per prima cosa Bob chiama l'endpoint nel modo in cui deve essere utilizzato: chiede all'API il proprio profilo, portando il proprio token membro in un'intestazione di autorizzazione, esattamente come fa l'app.

  4. Il suo profilo, ogni campo

    Il server restituisce esattamente quello che dovrebbe: il profilo di Bob, perché ha chiesto il proprio record con il proprio token. Non c'è niente di sbagliato qui. Ma vale la pena dare un'occhiata più da vicino alla forma del disco.

  5. Effettua una modifica normale

    Bob utilizza inizialmente la funzionalità come previsto: una semplice modifica del profilo. Passa la richiesta al metodo di salvataggio e invia un nuovo nome visualizzato e avatar, i due campi effettivamente offerti dal modulo del profilo.

  6. La modifica richiede

    Il salvataggio ha funzionato. Il nome visualizzato e l'avatar sono cambiati e tutto il resto è rimasto invariato.

  7. Vedi la modifica sul suo profilo

    Prima di spingersi oltre, Bob fa quello che farebbe qualsiasi membro dopo aver salvato: ricarica la pagina del suo account. Qualunque cosa il salvataggio abbia scritto sul suo record è ciò che la pagina rilegge.

  8. Aggiungi i campi che il modulo non mostra mai

    Stessa richiesta, stesso token, stesso endpoint. Bob mantiene il nome visualizzato e l'avatar nel corpo e aggiunge altre due chiavi, i nomi esatti dei campi che gli è stato consegnato dalla chiamata letta: il saldo dei punti e il livello. Se il salvataggio unisce tutto ciò che riceve, scriverà anche questi.

  9. Il saldo che non ha mai guadagnato

    C'è voluto tutto. Il profilo di Bob ora dice che ha mezzo milione di punti e un livello platino, stabilito da nient'altro che due chiavi extra in una modifica del profilo.

  10. Guardalo sul suo profilo

    L'API ha restituito 200, ma Bob vuole vederlo come lo vedrebbe qualsiasi membro. Ricarica la console del proprio account: qualunque cosa il salvataggio abbia scritto sul suo record è ciò che la pagina rileggerà.

Copertura dei framework di sicurezza

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