Abuso di GraphQL: introspection, batching, profondità
GraphQL lascia al client comporre le query. Utile, ma sposta rischi: l'intero schema può essere scoperto, e i controlli di autorizzazione devono coprire ogni campo, non solo l'endpoint.
I problemi
Introspection: __schema rivela tutti i tipi e le operazioni, mappando la superficie. Query annidate: relazioni cicliche generano query enormi (DoS). Batching: molte operazioni in una richiesta aggirano il rate limit (es. brute-force di login). BOLA per campo: un campo restituisce dati altrui se manca il check.
{ __schema { types { name fields { name } } } } # dump dello schemaDifesa
Disabilita l'introspection in produzione, limita profondità e complessità delle query (depth/cost analysis), rate limit che conti le operazioni non le richieste, e autorizzazione a livello di risolutore/campo. Persisted queries per accettare solo operazioni note.