Spre deosebire de API-urile REST unde fiecare cerere are o complexitate predictibilă, o singură interogare GraphQL imbricată poate declanșa mii de operațiuni pe baza de date (atac DoS prin consum de resurse). Analiza de cost asociază fiecărui câmp o pondere numerică (cost) și respinge cererile care depășesc un buget maxim de complexitate admis per sesiune.
Protecție împotriva Interogărilor Abuzive și DoS
Combină analiza statică a arborelui AST cu un algoritm Token Bucket stocat în Redis pentru limitare precisă pe IP sau token client.
// Configurare analiză de cost în GraphQL Armor / Apollo:
import { costAnalysis } from '@escape.tech/graphql-armor-cost-limit';
const costPlugin = costAnalysis({
maxCost: 5000,
defaultCost: 1,
objectCost: 2,
scalarCost: 1,
onCostLimitExceeded: ({ cost, maxCost }) => {
throw new Error(`Cost interogare depășit: ${cost} (maxim permis: ${maxCost})`);
}
});
Utilizarea corectă a acestei funcționalități în arhitectura GraphQL garantează o comunicare optimă între client și server, elimină supra-încărcarea rețelei și asigură scalabilitatea sistemelor moderne.
Întrebări & Exemple de Cod:
Rate Limiting și Analiză de Cost (Query Cost Analysis) per câmp în GraphQLAi o nelămurire despre utilizarea comenzii
Rate Limiting și Analiză de Cost (Query Cost Analysis) per câmp în GraphQLsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.