Api Gateway hard
A GraphQL-based API Gateway is vulnerable to a 'Denial of Wallet' attack where a single deeply nested query (recursion) can trigger thousands of backend database lookups. What is the most robust defense?
- A Standard IP-based Rate Limiting (e.g., 10 req/sec) to ensure no single user sends too many queries.
- B Implementing 'Query Complexity Analysis': The Gateway parses the AST (Abstract Syntax Tree), calculates a 'cost' for the query based on fields and depth, and rejects it before execution if it exceeds a budget.
- C Rewriting all backend resolvers to use a NoSQL database, which is inherently immune to nested query performance issues.
- D Increasing the GraphQL engine's thread pool size to handle the massive load of redundant lookups.
Answer: B. Implementing 'Query Complexity Analysis': The Gateway parses the AST (Abstract Syntax Tree), calculates a 'cost' for the query based on fields and depth, and rejects it before execution if it exceeds a budget.
In GraphQL, 'Number of Requests' is a poor metric for load. A single query can be catastrophic. Static analysis of the query structure (AST) allows the Gateway to 'Budget' compute resources and protect the backend from unintended or malicious 'Expensive' queries.
One system design question a day, with spaced repetition so the ones you miss come back.
Get the appRelated questions
- Your Gateway communicates with backends via HTTP/1.1 connections. A slow backend service causes 'Head-of-Line Blocking'. How does switching to HTTP/2 as the Gateway-to-Backend transport mitigate this?
- What is the primary architectural role of an API Gateway in a microservices environment?
- Why is 'Stateless Token Validation' (e.g., using JWTs) significantly more scalable at the Gateway level than 'Stateful Validation' (e.g., using Opaque/Reference Tokens)?
- Your Gateway is configured to cache any URL ending in `.css` or `.jpg`. An attacker tricks a victim into visiting `https://api.com/v1/profile/info/style.css`. How can this lead to an 'Account Takeover'?
- An API is receiving a sudden surge of 10,000 requests per second from a single IP address. How does an API Gateway preserve the stability of the backend services?
- How can an API Gateway help prevent 'Double Charging' in a payment system when a mobile client retries a failed request due to a poor connection?