API Security Implementation: The 2025 DevSecOps Guide

An API security architect implementing a DevSecOps guide to protect against shadow APIs and OWASP Top 10 threats.

APIs are no longer just a component of modern applications; they are the central nervous system, driving over 80% of all internet traffic. Yet, as an industry, our approach to securing them is dangerously immature. While we’ve spent decades hardening web applications, APIs remain the new, exposed soft underbelly of our systems. The result is a landscape where 70% of organizations admit they do not monitor or test all their APIs, creating a massive, unmanaged attack surface.

As an API security architect who has secured environments handling over a billion requests per day and contributed to the OWASP API Security Top 10 project, I’ve seen the catastrophic consequences of this neglect. The primary culprit is often the Shadow API—undocumented, unmanaged, and completely invisible to security teams until it shows up in a breach notification.

“An API is a programmatic contract. A Shadow API is an unwritten, verbal agreement with no terms and no security. In 2025, attackers aren’t breaking contracts; they’re exploiting the ones you never knew you signed.”

The API Threat Landscape in 2025

The API attack surface is not just growing; it’s mutating. Attackers have shifted their focus from traditional web exploits to targeted API abuse, leveraging the inherent trust and data-rich nature of API endpoints.

OWASP API Security Top 10: The Modern Threat Ranking

The OWASP API Security Top 10 is the definitive ranking of API threats. The 2025 list underscores a clear shift from injection-style attacks to logic-based abuse targeting authentication and authorization.

Key Threats for 2025:

  1. API1:2023 – Broken Object Level Authorization (BOLA): This remains the #1 threat. BOLA occurs when an API endpoint allows an attacker to manipulate the ID of an object to access data they are not authorized to see (e.g., changing GET /api/v1/users/123 to GET /api/v1/users/456).
  2. API2:2023 – Broken Authentication: Flaws in authentication mechanisms, such as weak JSON Web Token (JWT) validation or insecure API key storage, allow attackers to impersonate legitimate users.
  3. API5:2023 – Broken Function Level Authorization: This occurs when an API fails to properly check a user’s permissions, allowing a regular user to access administrative endpoints (e.g., a user accessing POST /api/v1/admin/deleteUser).
  4. API10:2023 – Unsafe Consumption of APIs: This includes vulnerabilities arising from insecurely integrating with third-party APIs, a growing blindspot in many organizations. The rise of Shadow APIs is a direct contributor to this and other top threats.

Case Study: The Anatomy of Modern API Breaches

These are not theoretical risks. They are the root cause of some of the most significant breaches in recent years.

  • Optus (2022-2025 Analysis): The catastrophic breach was traced back to an unauthenticated, publicly exposed API endpoint that was part of a legacy system. This shadow API allowed attackers to enumerate customer records by simply iterating through object IDs, a classic BOLA attack.
  • Uber (Ongoing Incidents): Multiple incidents at Uber have involved attackers finding hardcoded API keys and secrets in forgotten code repositories or mobile applications. These credentials for internal, “shadow” APIs were then used to pivot and access sensitive internal systems.
  • Twitter (X): A BOLA vulnerability allowed an attacker to submit a list of phone numbers and emails and have the API return any associated Twitter account IDs, bypassing privacy controls. This was exploited to link 5.4 million accounts to their real-world identities.

“The most damaging breaches of the last 24 months didn’t happen because of a zero-day exploit. They happened because a developer deployed an internal API endpoint five years ago, forgot to document it, and an attacker found it before they did.”

API Discovery and Inventory: Finding Your Shadow APIs

You cannot secure what you do not know exists. The first and most critical step in any API security program is creating a complete and accurate inventory of all your APIs, including the ones your security team doesn’t know about. A recent study found that the number of unknown shadow APIs is typically 2-3x the number of known APIs.

Methods for API Discovery

A multi-pronged approach is required to achieve full visibility. Relying on a single method will leave you with critical blindspots.

  • Traffic Analysis (Active & Passive): Use tools like Burp SuiteOWASP ZAP, or a network tap to passively monitor and analyze all traffic flowing to and from your application servers. This is one of the most effective ways to find undocumented endpoints that are being actively used.
  • API Gateway Log Analysis: Your API gateway (e.g., Kong, Tyk, AWS API Gateway) logs every request it processes. Regularly ingest and analyze these logs to identify requests to endpoints that are not defined in your official OpenAPI specifications.
  • OpenAPI Specification Enforcement: Integrate tools into your CI/CD pipeline that compare your running code and traffic against your OpenAPI (Swagger) documentation. The goal is to flag any deviation, which could indicate a shadow API.
  • Automated Discovery Tools: Specialized API security platforms like 42CrunchSalt Security, or Noname Security are designed for this purpose. They connect to your network environment and use traffic analysis and machine learning to automatically build an inventory of all APIs, identify shadow and zombie APIs, and detect anomalous behavior.

Comparing Discovery Methods

No single method provides 100% coverage. A mature DevSecOps practice combines several of these approaches.

Discovery MethodCoverage PotentialAccuracyImplementation Cost
Manual Code Review~40%HighHigh
API Gateway Logs~70%MediumLow
Network Traffic Analysis~85%HighMedium
Automated Discovery Tools90%+HighMedium-High

Implementation advice:

  • Start with your API gateway logs. This is the lowest-cost, highest-return starting point.
  • Integrate traffic analysis into your QA process. Have your security team or QA engineers proxy application traffic through a tool like Burp Suite during normal testing to spot undocumented calls.
  • Invest in an automated tool once your API footprint grows beyond what can be manually managed. The ROI from preventing a single BOLA-related breach will pay for the tool many times over.

An accurate API inventory is the foundation of any security strategy. It’s a prerequisite for everything that follows, from authentication and authorization to rate limiting and security testing, which are all covered in our complete Ethical Hacking Guide for 2025.

With a complete inventory as our foundation, we can now address the heart of API security: Authentication and Authorization. These two concepts, while related, are distinct and require separate, robust controls. Authentication answers the question, “Who are you?” Authorization answers the question, “What are you allowed to do?” Flaws in either of these domains are the root cause of the most catastrophic API breaches. This section provides a detailed, implementation-focused guide to getting them right.

“Authentication without authorization is like checking a guest’s ID at the door but then letting them wander into every room in the house, including the master bedroom. You’ve verified who they are, but you haven’t controlled what they can access.”

Authentication & Authorization: The Core of API Defense

Properly implemented authentication and authorization are non-negotiable. In modern, distributed systems, this means moving beyond simple API keys and embracing token-based standards like OAuth 2.0 and JWTs. This section details the technical implementation of these standards and how to avoid common pitfalls.

Technical Implementation: OAuth 2.0 and OpenID Connect (OIDC)

OAuth 2.0 is an authorization framework, not an authentication protocol. It is designed to grant specific, limited permissions (scopes) to a client application on behalf of a user. OpenID Connect (OIDC) is an identity layer built on top of OAuth 2.0 that adds the authentication piece, providing a standardized way to verify a user’s identity and obtain a signed id_token.

For any user-facing API, using the Authorization Code Flow with PKCE (Proof Key for Code Exchange) is the current best practice. This flow prevents authorization code interception attacks and is essential for securing both web and mobile applications.

Architectural Best Practice:

  • Centralize Authentication: Use a dedicated, centralized OAuth 2.0 / OIDC provider (e.g., Okta, Auth0, Keycloak, or a custom-built identity service). Do not attempt to re-implement the OAuth flows in every microservice.
  • API Gateway as Enforcement Point: Your API gateway should be responsible for the initial validation of incoming access tokens (JWTs), checking the signature and expiration.
  • Downstream Services Validate Claims: While the gateway handles the initial check, individual microservices must still be responsible for validating the fine-grained claims and scopes within the token to make authorization decisions.

Securing JSON Web Tokens (JWTs)

JWTs are the standard format for access tokens in modern API security. However, they are frequently misconfigured. A secure JWT implementation must adhere to strict validation rules on every single request.

Key JWT Security Best Practices:

  1. Use Asymmetric Signatures (RS256/ES256): Always prefer asymmetric algorithms (like RS256) over symmetric ones (like HS256). With HS256, any service that can validate a token can also create a new one, creating a massive security risk if the key is ever compromised. With RS256, services validate using a public key, while only the central authorization server holds the private key needed for signing.
  2. Enforce Strict Validation: On every API request that requires authentication, your code must validate the following:
    • The token’s signature against the public key.
    • The token’s expiration (exp claim).
    • The token’s issuer (iss claim) to ensure it came from your trusted auth server.
    • The token’s audience (aud claim) to ensure it was intended for the specific API being called.
  3. Keep Token Lifespans Short: Access tokens should have a short lifespan (e.g., 5-15 minutes). Use long-lived refresh tokens to obtain new access tokens without forcing the user to log in again.

Here is a Python code example demonstrating secure JWT validation using the PyJWT library:

pythonimport jwt

# The public key of your authorization server
# In a real application, this would be fetched from a JWKS endpoint.
PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"

def validate_jwt(token: str):
    """
    Validates a JWT, checking its signature, expiration, issuer, and audience.
    """
    try:
        decoded_token = jwt.decode(
            token,
            PUBLIC_KEY,
            algorithms=['RS256'],
            audience='https://api.example.com', # The identifier for your API
            issuer='https://auth.example.com'  # The identifier for your auth server
        )
        return decoded_token
    except jwt.ExpiredSignatureError:
        # Specific error for an expired token
        raise AuthenticationError("Token has expired")
    except jwt.InvalidAudienceError:
        # Specific error if the token wasn't meant for this API
        raise AuthenticationError("Invalid token audience")
    except jwt.InvalidIssuerError:
        # Specific error if the token came from an untrusted source
        raise AuthenticationError("Invalid token issuer")
    except jwt.PyJWTError as e:
        # Generic error for other validation failures (e.g., bad signature)
        raise AuthenticationError(f"Invalid token: {e}")

class AuthenticationError(Exception):
    pass

Preventing Broken Object Level Authorization (BOLA)

BOLA (API1:2023) is the most critical and common API vulnerability. It occurs when the application logic fails to check if the authenticated user has permission to access the specific data object they are requesting.

The Vulnerable Scenario:
A user makes a legitimate request: GET /api/v1/orders/123
The API correctly verifies their JWT, but then only checks if the user is authenticated. It fails to check if order 123 actually belongs to that user.

The Attack:
The attacker simply changes the ID in the request: GET /api/v1/orders/456
Because the authorization check is missing, the API returns the order details for another user.

The Fix: Entitlement Checks on Every Request
The solution is to implement an authorization check on every single request that accesses a data object. This check must tie the authenticated user’s ID (from the validated JWT) to the ownership of the requested object.

Here is a pseudo-code example for a Django/Python application:

python# Django REST Framework View

class OrderDetailView(APIView):
    permission_classes = [IsAuthenticated] # Ensures user is logged in

    def get(self, request, order_id):
        # The authenticated user object from the JWT
        current_user = request.user 

        try:
            # Fetch the requested order from the database
            order = Order.objects.get(id=order_id)

            # !!! THIS IS THE CRITICAL BOLA CHECK !!!
            # Verify that the owner of the requested order is the currently logged-in user.
            if order.user_id != current_user.id:
                # If not, raise an authorization failure. Do NOT return a 404.
                # Returning a 403 (Forbidden) prevents attackers from enumerating valid IDs.
                return Response({"detail": "You do not have permission to access this order."}, status=403)

            # If the check passes, serialize and return the data
            serializer = OrderSerializer(order)
            return Response(serializer.data)

        except Order.DoesNotExist:
            # The requested order does not exist
            return Response({"detail": "Not found."}, status=404)

This explicit ownership check is the fundamental defense against BOLA. It must be implemented in every endpoint that handles user-specific data.

Implementing Role-Based Access Control (RBAC)

For more complex applications, you need a way to manage different permission levels (e.g., users vs. admins). RBAC is a standard model for this.

  1. Include Roles in the JWT: Your authorization server should include the user’s roles (e.g., ["user", "editor"]) or permissions/scopes (e.g., ["read:orders", "write:articles"]) as a claim within the JWT payload.
  2. Enforce Roles in Code: Your API code can then use these claims to make authorization decisions. This can be done via decorators or middleware.

Decorator Example (Python/Flask):

pythonfrom functools import wraps

def roles_required(*roles):
    def decorator(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            # Assumes 'g.user' is populated from the validated JWT
            user_roles = g.user.get('roles', [])
            if not any(role in user_roles for role in roles):
                return {"message": "Insufficient permissions"}, 403
            return f(*args, **kwargs)
        return decorated_function
    return decorator

@app.route('/admin/dashboard')
@roles_required('admin')
def admin_dashboard():
    return {"data": "Welcome to the admin dashboard"}

This layered approach—strong authentication with OAuth 2.0/OIDC and JWTs, combined with explicit, per-request authorization checks for both object ownership (BOLA) and user roles (RBAC)—is the bedrock of a secure API architecture. Failure to implement any one of these layers correctly leaves your system critically exposed. For a broader view on securing systems, our Advanced Cybersecurity Trends 2025 guide provides essential context.

Of course. Here is a comprehensive list of 50 technical and strategic FAQs for the professional guide, “API Security Implementation: Complete Defense Against Shadow APIs and Abuse.” This list is designed to address the specific questions and challenges that developers, architects, and DevSecOps professionals face.

API Security Implementation: The Professional’s FAQ

API Threat Landscape & Discovery

  1. What is a “Shadow API”?
    A Shadow API is an API endpoint that is functional and exposed but is not documented or managed by the organization’s official governance processes. It’s an unknown and unmonitored part of the attack surface.cycognito
  2. What is a “Zombie API”?
    A Zombie API is a specific type of Shadow API that is an older, outdated version of an API (e.g., /v1/) that was never properly decommissioned after a new version (/v2/) was released. These often lack current security controls.
  3. Why is Broken Object Level Authorization (BOLA) the #1 OWASP API threat?
    Because it’s a simple logical flaw that is extremely common and has a high impact. It allows attackers to access data belonging to other users simply by changing an ID in the URL or request body, and it’s often missed by automated scanners.owasp
  4. What’s the most effective method for discovering Shadow APIs?
    Network traffic analysis is the most comprehensive method, as it observes all actual traffic, not just what’s documented or passing through a gateway. Specialized automated tools are the most effective way to implement this at scale.
  5. My APIs are all internal. Do I still need to secure them?
    Yes. This is a critical mistake. A Zero Trust architecture assumes that no traffic is inherently trustworthy. An attacker who compromises one internal service can use it to pivot and attack other insecure internal APIs.aikido
  6. How does an OpenAPI/Swagger specification help with security?
    It defines a strict “contract” for your API. You can use it to automatically validate incoming requests, reject malformed data, and identify traffic going to undocumented (shadow) endpoints.
  7. What is the difference between API security and traditional web application security?
    While there is overlap, API security focuses more on logical flaws in authentication/authorization, business logic abuse, and data exposure, whereas traditional web security often focused more on injection attacks targeting rendered HTML (like XSS).
  8. How do I discover APIs in a serverless or microservices architecture?
    This is where manual methods fail. You need automated tools that can analyze traffic from cloud provider flow logs (e.g., VPC Flow Logs in AWS), service mesh data, or agents deployed alongside your services.
  9. What is the financial impact of a typical API breach?
    It’s significant. The average cost of a data breach is over $4 million, and API-related breaches often involve massive data exfiltration, leading to higher-than-average regulatory fines (e.g., under GDPR or CCPA) and reputational damage.
  10. Is my API gateway enough for API security?
    No. An API gateway is essential for enforcement (rate limiting, initial auth checks), but it cannot detect business logic flaws like BOLA or excessive data exposure. It is a necessary but insufficient component.practical-devsecops

Authentication & Authorization

  1. What is the difference between Authentication and Authorization?
    Authentication verifies who a user is (identity). Authorization determines what that verified user is allowed to do (permissions).gitguardian
  2. Why should I use RS256 (asymmetric) instead of HS256 (symmetric) for JWT signing?
    With HS256, any service that can validate a token can also create one. With RS256, services validate with a public key, but only the central auth server has the private key to sign/create tokens, drastically reducing the attack surface.gitguardian
  3. What is the current best-practice OAuth 2.0 flow for web and mobile apps?
    The Authorization Code Flow with PKCE (Proof Key for Code Exchange). It prevents authorization code interception attacks and is considered the most secure flow for public clients.raidiam
  4. How short should my access token (JWT) lifespan be?
    As short as is practical for your application’s user experience, typically between 5 and 15 minutes. Use long-lived refresh tokens to obtain new access tokens without re-authenticating the user.pynt
  5. What claims MUST I validate in a JWT on every request?
    At a minimum: the signature (sig), the expiration (exp), the issuer (iss), and the audience (aud). Failure to validate any of these can lead to serious vulnerabilities.pynt
  6. How do I prevent BOLA vulnerabilities?
    On every single endpoint that accesses a user-specific resource, you must write an explicit authorization check that verifies that the ID of the logged-in user matches the owner of the requested resource.
  7. Should a BOLA failure return a 403 Forbidden or a 404 Not Found?
    Return a 403 Forbidden. Returning a 404 would allow an attacker to differentiate between objects that exist but they can’t access, versus objects that don’t exist at all, helping them enumerate valid IDs.
  8. What is the difference between Role-Based Access Control (RBAC) and Attribute-Based Access Control (ABAC)?
    RBAC grants permissions based on a user’s static role (e.g., “admin,” “editor”). ABAC is more granular and makes decisions based on attributes of the user, the resource, and the environment (e.g., “allow access only if the user is a manager in the same department and it’s during business hours”).practical-devsecops
  9. Where is the best place to store JWTs on the client-side?
    In secure, HttpOnly cookies. Storing them in Local Storage makes them vulnerable to being stolen by Cross-Site Scripting (XSS) attacks.
  10. Should I use a simple API key for authentication?
    API keys are suitable for simple, server-to-server communication where you only need to identify the calling application. They are not sufficient for user authentication and provide no authorization context.knowi

Rate Limiting & Input Validation

  1. What’s the difference between rate limiting and throttling?
    They are often used interchangeably. Rate limiting sets a hard cap on requests per time window. Throttling smooths out request rates, often by slowing down responses once a limit is approached.
  2. What is a better rate-limiting algorithm: fixed window, sliding window, or token bucket?
    Sliding window and token bucket are generally superior to fixed window, as they prevent “bursty” traffic from gaming the system at the boundary of a time window.
  3. Should I apply rate limits per-user or globally?
    Both. You need global rate limits to protect against large-scale DDoS attacks, and more restrictive per-user (or per-API key) limits to prevent abuse by a single authenticated user.practical-devsecops
  4. Where should rate limiting be implemented?
    The ideal place is at the API gateway or edge layer. This protects your backend services from being overwhelmed.
  5. How does schema validation prevent attacks?
    By defining a strict schema for your API requests (using OpenAPI or JSON Schema), you can automatically reject any request that contains unexpected fields, incorrect data types, or oversized payloads, mitigating a range of attacks including Mass Assignment and some injection attacks.
  6. Can a REST API be vulnerable to SQL Injection?
    Absolutely. If your API endpoint takes user input (e.g., from a URL parameter like /api/products?category=Gifts) and concatenates it directly into a SQL query string, it is vulnerable. Always use parameterized queries or a trusted ORM. This is a topic explored in our SQL Injection Guide.
  7. What is a “Mass Assignment” vulnerability?
    This occurs when a framework automatically binds incoming JSON properties to internal object properties. An attacker can inject unexpected fields (like "isAdmin": true) into a request, and if not properly handled, the framework might elevate their privileges.
  8. How do I prevent Mass Assignment?
    Use Data Transfer Objects (DTOs) and explicitly define which fields are allowed to be bound from a request. Do not blindly map the entire incoming JSON to your database model.
  9. What is an XXE (XML External Entity) attack?
    If your API accepts XML as an input format, it may be vulnerable to XXE. An attacker can craft an XML payload that references external files or URLs, potentially allowing them to read sensitive files from your server. Ensure your XML parser has external entity processing disabled by default.
  10. What is a ReDoS (Regular Expression Denial of Service) attack?
    This occurs when your API uses a poorly written regular expression for input validation. An attacker can provide a specially crafted string that causes the regex engine to enter a state of “catastrophic backtracking,” consuming 100% CPU and causing a denial of service.

Testing & Monitoring

  1. What is the difference between DAST and SAST for API security?
    SAST (Static Application Security Testing) analyzes your source code for potential vulnerabilities. DAST (Dynamic Application Security Testing) attacks your running application from the outside, just as a hacker would, to find vulnerabilities. Both are necessary.
  2. Can OWASP ZAP or Burp Suite be used to test APIs?
    Yes. Both tools can be configured to proxy traffic from your application and perform automated scans and manual testing on your API endpoints. You can import your OpenAPI specification to guide their testing.
  3. What is “API Fuzzing”?
    Fuzzing is an automated testing technique where you send a huge volume of unexpected, malformed, and random data to your API endpoints to see if you can cause unexpected behavior or crashes, which often indicate a vulnerability.zuplo
  4. Where should API security testing be integrated in the CI/CD pipeline?
    As early as possible (“shift left”). SAST scans should run on every commit or pull request. DAST and fuzzing scans should run in your staging or integration environments before deployment to production.
  5. What is the goal of an API penetration test?
    A penetration test goes beyond automated scanning. A human expert attempts to find complex, business-logic flaws (like BOLA and authorization bypasses) that automated tools typically miss. This process is part of a complete Ethical Hacking Guide.zuplo
  6. What key metrics should I monitor for API security?
    • Authentication failures (high rates can indicate credential stuffing).
    • Authorization failures (high rates can indicate BOLA attempts).
    • Spikes in 4xx/5xx error codes.
    • Anomalous traffic patterns (e.g., a single user accessing thousands of records).
    • Changes in response data size (can indicate data exfiltration).
  7. How does AI/ML help with API monitoring?
    AI/ML can baseline “normal” API behavior for each user and endpoint. It can then automatically detect anomalies that deviate from this baseline, such as a user suddenly accessing an endpoint they’ve never used before, which would be impossible to spot with static rules. For more on this, see our guide on AI-Powered Pentesting.zuplo
  8. What is a WAF and can it protect my APIs?
    A Web Application Firewall (WAF) can provide a layer of defense against common, known attack patterns (like basic SQL injection). However, a traditional WAF is often blind to the business logic of your API and cannot stop attacks like BOLA.
  9. What is a WAAP?
    Web Application and API Protection (WAAP) is the modern evolution of the WAF. WAAP solutions offer more advanced API-specific protections, including automated discovery, bot mitigation, and detection of anomalous behavior.
  10. What is the first step in creating an API Incident Response plan?
    Logging. Ensure you are logging every single API request and response (headers and metadata, not necessarily full bodies) in a centralized location. Without logs, you have no ability to conduct a forensic investigation. An Incident Response Framework is crucial.

Advanced & Future-Facing

  1. What is mTLS and when should I use it?
    Mutual TLS (mTLS) is a process where both the client and the server present TLS certificates to authenticate each other. It is a very strong form of authentication for server-to-server (M2M) communication and is becoming a standard in high-security environments like Open Banking.raidiam
  2. What are “sender-constrained tokens”?
    This is a technique to “bind” a JWT to the specific client that is using it, often by embedding a hash of the client’s TLS certificate into the token. This prevents a stolen token from being replayed by an attacker from another machine.raidiam
  3. What is FAPI (Financial-grade API)?
    FAPI is a high-security API profile built on top of OAuth 2.0 and OIDC. It mandates the use of advanced security controls like mTLS and sender-constrained tokens, and it is becoming the standard for open banking and other high-risk applications.raidiam
  4. How do I secure GraphQL APIs?
    GraphQL APIs present unique challenges. You must implement controls for query depth and complexity to prevent denial-of-service attacks, and be extremely careful with authorization, as a single endpoint can expose the entire data graph.
  5. What is the difference between an API Key and a JWT?
    An API Key is just a simple string that identifies the calling application. A JWT is a rich, verifiable data structure that contains claims about the identity of the user, their roles, and when the token expires. JWTs are far more secure and flexible.
  6. How should I manage API secrets and credentials in my code?
    Never, ever hardcode them. Store all secrets in a dedicated secrets management system like HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault. Your application should fetch these secrets at runtime.
  7. What is “Excessive Data Exposure”?
    This is OWASP API3:2023. It occurs when your API returns more data in a response than is actually needed by the front-end application. An attacker can intercept the traffic and see this extra sensitive data. Always tailor your API responses to return the minimum necessary data for a given use case.
  8. Should I obfuscate or hide my API documentation?
    No. This is “security by obscurity,” and it is not a valid security control. Assume that attackers will always have access to your documentation and can reverse-engineer your client applications. Secure the endpoints themselves.
  9. What is the most important cultural shift needed for API security?
    Treating API security as a design problem, not a post-deployment problem. Security must be “shifted left” and be a core part of the API design and development lifecycle, not just a checkbox for a final penetration test.
  10. What is the first thing I should do after reading this guide?
    Start the discovery process. Use your gateway logs or a simple traffic monitoring tool to get a real picture of all the API endpoints running in your environment. You cannot secure what you do not know you have.