Api Keys API Security
How API Keys Work in APIs
API keys are the simplest form of API authentication — a static token passed in an HTTP header, query parameter, or cookie. The most common pattern is the Authorization header:
Authorization: Bearer sk-1234567890abcdef
Keys serve two primary purposes:
- Identification — associating requests with a specific client or user
- Basic access control — blocking unauthenticated requests
The fundamental security property of API keys is that they must remain confidential. Unlike passwords, keys typically lack expiration, rotation policies, or multi-factor protections. Once compromised, an API key grants persistent access until explicitly revoked.
API keys are often transmitted in plain text over HTTPS. This means:
- Network-level security depends entirely on TLS
- Keys can be logged in server access logs, error messages, or client-side code
- Keys may be exposed in browser developer tools or mobile app decompilation
middleBrick's API scanning tests for common API key misconfigurations by examining whether keys are exposed in client-side code, logged in responses, or transmitted insecurely. The scanner checks for predictable key patterns and verifies that authentication headers are properly validated.
Common API Key Misconfigurations
Developers often treat API keys as simple access tokens without considering their security implications. Here are the most critical mistakes:
Hardcoded Keys in Client Code
Embedding API keys directly in JavaScript, mobile apps, or frontend code makes them trivially extractable. Attackers can view source code or decompile APKs to harvest keys.
Logging Keys in Error Messages
Stack traces, error responses, or debug logs that include API keys create permanent exposure. A single log entry can compromise an entire service.
Predictable Key Generation
Keys generated with sequential numbers, weak randomness, or guessable patterns enable brute-force attacks. Keys like "test-key-001" or those based on timestamps are trivial to guess.
Missing Rate Limiting
Without rate limiting, attackers can make unlimited requests with a valid key, potentially exhausting API quotas or causing denial of service.
Insecure Transmission
Sending keys over HTTP instead of HTTPS exposes them to network interception. Even with HTTPS, keys in query parameters can appear in browser history, server logs, and referrer headers.
Overly Permissive Scopes
Keys that grant more permissions than needed (read/write access when only read is required) increase the blast radius of any compromise.
middleBrick's scanning identifies these issues by analyzing how keys are transmitted, checking for predictable patterns, and verifying that rate limiting is properly implemented. The scanner can detect when keys appear in client-side code or are logged in responses.
Hardening API Keys
Secure API key management requires defense in depth. Here are concrete practices that significantly reduce risk:
Never Expose Keys Client-Side
Use proxy servers or backend services to handle API calls that require keys. Mobile apps should communicate with your backend, not directly with third-party APIs. For browser-based applications, consider short-lived tokens or OAuth flows instead of static keys.
Implement Proper Key Rotation
Set expiration times for keys and automate rotation. Even if a key is compromised, rotation limits the window of exposure. Store keys in secure vaults (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault) rather than configuration files.
Apply Principle of Least Privilege
Create separate keys for different purposes with minimal required permissions. A read-only key for analytics should not have write permissions. Use key prefixes or metadata to track purpose and owner.
Enable Rate Limiting and Quotas
Implement per-key rate limiting to prevent abuse. Set request quotas that align with legitimate usage patterns. Monitor for unusual patterns like sudden traffic spikes or geographic anomalies.
Use Secure Transmission Only
Always require HTTPS. Avoid query parameters for keys — use headers instead. Implement HSTS to prevent protocol downgrade attacks. Consider adding IP allowlisting for sensitive keys.
Monitor and Audit Usage
Log API key usage with timestamps, IP addresses, and request details. Set up alerts for suspicious patterns like failed authentication attempts or unusual geographic locations. Regularly audit key usage reports.
Implement Key Revocation Procedures
Have documented procedures for immediate key revocation when compromise is suspected. Test your revocation process regularly. Consider implementing key versioning to allow graceful transitions.
middleBrick's continuous monitoring in the Pro plan can alert you when new API keys appear in your codebase or when key usage patterns change unexpectedly. The scanner also verifies that rate limiting is properly enforced and that keys aren't exposed in client-side assets.