API Security Is Non-Negotiable
APIs are the attack surface of modern applications. 94% of applications have API security vulnerabilities. Here's how to build APIs that don't get you in the news.
Authentication Best Practices
Use JWT Properly
- Set reasonable expiration (15 min for access tokens)
- Use refresh tokens for longer sessions
- Store secrets in environment variables, never in code
- Use asymmetric keys (RS256) for distributed systems
OAuth 2.0 Implementation
- Use PKCE for all public clients
- Validate redirect URIs strictly
- Implement proper scope limitations
- Rotate client secrets regularly
Authorization Patterns
RBAC vs ABAC
Use Role-Based Access Control (RBAC) for simple cases, Attribute-Based Access Control (ABAC) for complex requirements:
// RBAC Example
if (user.role === 'admin') { allowAccess(); }
// ABAC Example
if (user.department === resource.department &&
user.clearance >= resource.classification) {
allowAccess();
}
Broken Object Level Authorization (BOLA)
The #1 API vulnerability. Always verify:
// BAD - No ownership check
app.get('/orders/:id', async (req, res) => {
const order = await Order.findById(req.params.id);
res.json(order);
});
// GOOD - Verify ownership
app.get('/orders/:id', async (req, res) => {
const order = await Order.findOne({
_id: req.params.id,
userId: req.user.id
});
if (!order) return res.status(404).json({ error: 'Not found' });
res.json(order);
});
Rate Limiting
Implement at multiple levels:
- IP-based: 100 requests/minute per IP
- User-based: 1000 requests/hour per user
- Endpoint-based: Stricter for expensive operations
- Return headers: X-RateLimit-Remaining, Retry-After
Input Validation
- Validate everything on the server (client validation is UX, not security)
- Use strong typing with validation libraries (Zod, Joi)
- Sanitize inputs for injection attacks
- Limit request body sizes
- Validate content types
Logging and Monitoring
Log all authentication events:
- Successful and failed login attempts
- Password reset requests
- Permission denied events
- Unusual access patterns
Need a security review of your API? We do thorough security assessments.