API Security Best Practices
Securing REST APIs with authentication and rate limiting.
Authentication Methods
# API Keys
X-API-Key: abc123xyz789
# Bearer Tokens (JWT)
Authorization: Bearer eyJhbGci...
# Basic Auth
Authorization: Basic dXNlcjpwYXNz
# OAuth 2.0
Authorization: Bearer {token}
Rate Limiting
# Express rate limiter
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});
app.use("/api/", limiter);
Input Validation
# Validate all inputs
const schema = {
email: /^[^\s@]+@[^\s@]+$/,
age: (val) => val >= 0 && val <= 120
};
# Sanitize inputs
const clean = input.trim().toLowerCase();
Security Headers
# Essential headers
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000
# Express helmet
const helmet = require("helmet");
app.use(helmet());
HTTPS Only
# Redirect to HTTPS
app.use((req, res, next) => {
if (!req.secure) {
return res.redirect(301, "https://" + req.headers.host + req.url);
}
next();
});