Skip to main content
Version: v1

Denial of Service (DoS)

DoS

What is it?​

Denial of Service (DoS) occurs when an API is overwhelmed with excessive or resource-intensive requests, causing degradation or complete unavailability of the service.

Unlike traditional network-layer DoS attacks, API-level DoS focuses on exploiting application logic, expensive operations, and resource consumption patterns to exhaust backend systems such as CPU, memory, database connections, or third-party dependencies.

APIs are especially vulnerable due to their exposure to untrusted clients and their reliance on backend processing for each request.

What are specific examples?​

  • High-frequency request flooding without throttling
  • Expensive database queries triggered repeatedly
  • Large payload submissions consuming memory
  • Deeply nested JSON causing parsing overhead
  • Repeated invocation of resource-heavy endpoints (e.g., search, analytics)
  • Lack of timeouts leading to connection exhaustion
  • Chained requests amplifying backend load

Test case FAQs​

When is this test case applicable?​

  • Public-facing APIs or endpoints exposed to untrusted users
  • Endpoints performing resource-intensive operations
  • APIs interacting with databases, search engines, or external services
  • Critical business flows where availability is essential

How does it work?​

Prerequisites​

  • Identification of high-cost or critical endpoints
  • Baseline performance metrics (latency, throughput)
  • Ability to generate controlled request load

Test sequence​

  1. Establish baseline response metrics under normal conditions
  2. Gradually increase request volume to simulate load
  3. Send payloads designed to increase processing cost:
    • Large request bodies
    • Complex query parameters
    • Deeply nested structures
  4. Trigger repeated execution of expensive operations
  5. Monitor system behavior:
    • Response time degradation
    • Error rates (5xx, timeouts)
    • Resource utilization (CPU, memory)
  6. Identify thresholds where service degradation begins

Success/Failure indications​

  • Failure (vulnerable):

    • Significant latency increase under moderate load
    • API becomes unresponsive or returns 5xx errors
    • Resource exhaustion (CPU spikes, memory leaks)
    • Lack of protective mechanisms (throttling, timeouts)
  • Success (secure):

    • Graceful degradation under load
    • Requests are throttled or limited appropriately
    • Stable response times within defined thresholds
    • No uncontrolled resource exhaustion

What is the solution?​

  • Implement rate limiting and throttling mechanisms
  • Enforce request size and complexity limits
  • Optimize expensive operations (queries, processing logic)
  • Use timeouts and circuit breakers for backend services
  • Apply caching for frequently accessed data
  • Isolate critical services and apply resource quotas
  • Continuously monitor and test API performance under load

References​

Was this page helpful?