Risorse · 37

Proteggere un'API GraphQL: autorizzazione, costo delle query e prove

Applicare i diritti su oggetti e campi, limitare il lavoro del server e testare i percorsi di negazione.

Aggiornato · 3 min

Libri su Internet e tecnologia in biblioteca Illustrazione · scena fittizia

Obiettivi di questa guida

  • Mappare lo schema esposto
  • Esercitare le autorizzazioni
  • Costo delle query vincolate
  • Verificare i rifiuti

Verifica rapida

  • Un account può leggere l'oggetto di un altro account?
  • Un campo sensibile segue la decisione di accesso del suo elemento padre?
  • Qual è il costo complessivo di profondità, alias e paginazione?
  • Quali dettagli vengono divulgati tramite errori?
  • Chi monitora i rifiuti e gli abusi?

Metodo passo passo

  1. 1

    Operazioni di inventario

    Elencare tipi, campi, mutazioni, ruoli, proprietari degli oggetti e dati sensibili. Includere le query client correnti e i percorsi raramente utilizzati.

    Risultato: matrice di operazioni, ruoli, oggetti e campi.

  2. 2

    Testare ogni decisione di accesso

    Creare account di test distinti e scambiare gli ID degli oggetti, inclusi gli oggetti nidificati. I resolver devono applicare l'autorizzazione prima di restituire i dati.

    Risultato: casi riproducibili di accesso consentito e negato.

  3. 3

    Lavoro del server vincolato

    Misurare il costo effettivo di campi e raccolte. Testare contemporaneamente profondità, ampiezza, alias, paginazione, batching e tempo, quindi impostare limiti appropriati.

    Risultato: policy di costo e set di query avversarie.

  4. 4

    Ridurre l'esposizione non necessaria

    Decidere sull'introspezione per il contesto, nascondere i dettagli degli errori interni e rimuovere i campi che rivelano più di quanto necessario ai client.

    Risultato: revisione della configurazione pubblica e delle risposte di errore.

  5. 5

    Osservare con moderazione

    Registrare identità tecniche utili, operazioni, costi, negazioni e correlazioni, escludendo segreti e argomenti sensibili. Assegnare la responsabilità degli avvisi.

    Risultato: dashboard e procedura di indagine.

  6. 6

    Riproduci dopo la modifica

    Quando un campo, un ruolo o un client cambia, ripetere l'autorizzazione e i casi di carico. Verificare le vecchie query che ora attraversano il grafico rivisto.

    Risultato: esito della regressione e decisione di rilascio.

Indicatori di gestione

IndicatoreCosa misuraPrima azione
AccessoCasi di oggetti e campi negati come previstoCorreggere il resolver
CostoQuery complesse contenute dalla policyRegolare campi e limiti
ErroriRisposte pubbliche senza dettagli interniRidurre i dettagli esposti
RegressioneRiproduzioni delle operazioni del client dopo la modificaBlocco di malfunzionamenti involontari

Errori comuni

  • Affidamento esclusivo all'accesso agli endpoint
  • Limitazione della profondità ma ignorazione dell'ampiezza
  • Dimenticanza dell'autorizzazione dei campi annidati
  • Registrazione degli argomenti con dati sensibili

Domande frequenti

GraphQL elimina la normale autorizzazione API?

No. Ogni accesso a oggetti e campi richiede comunque una decisione basata su identità e contesto.

Disabilitare l'introspezione è sufficiente?

No. Può ridurre l'esposizione dello schema, ma non risolve i costi di accesso o di query.

Un limite di profondità è sufficiente?

No. Anche alias, ampiezza, elenchi e costi specifici dei campi sono importanti.

Riferimenti ufficiali

I riferimenti supportano il metodo. Adattare i controlli al proprio contesto; non costituiscono una certificazione. I titoli dei riferimenti originali e i documenti di origine potrebbero essere in un'altra lingua.