Una GraphQL API è uno stile di API web in cui i client richiedono esattamente i campi e le azioni di cui hanno bisogno, di solito tramite query e mutation. A differenza degli endpoint REST fissi, GraphQL può ridurre l'overfetching e rendere più semplici da sviluppare le applicazioni complesse, ma concentra anche l'accesso a molti oggetti e operazioni dietro un'unica interfaccia.
Questa flessibilità rende fondamentale l'autorizzazione lato server. Ogni campo, query e mutation deve essere verificato sul server, perché il client può essere modificato o aggirato completamente. Negli attacchi reali, una debole autorizzazione GraphQL può portare a un accesso di tipo IDOR, aggiornamenti non autorizzati di record, esposizione eccessiva di dati o abuso di query nidificate che raggiungono oggetti che l'utente non dovrebbe controllare. I difensori spesso limitano la profondità delle query, restringono l'introspezione in produzione, convalidano gli input e applicano permessi a livello di oggetto nei resolver.


