API Güvenliği Neden Kritik?
API'lar modern uygulamaların omurgasıdır. Bir güvenlik açığı tüm sistemi tehlikeye atar. OWASP API Security Top 10 listesi, en yaygın API güvenlik risklerini tanımlar.
İlgili rehberler: GraphQL vs REST · API rate limiting · KEYDAL API geliştirme hizmetleri
1. Authentication & Authorization
JWT (JSON Web Token) stateless authentication için endüstri standardıdır. Token'ı HttpOnly cookie'de saklayın, localStorage'da değil. Access token kısa ömürlü (15dk), refresh token uzun ömürlü (7 gün) olmalı.
const jwt = require('jsonwebtoken');
const token = jwt.sign({ userId: user.id, role: user.role }, SECRET, { expiresIn: '15m' });
// Middleware
function auth(req, res, next) {
const token = req.cookies.access_token;
if (!token) return res.status(401).json({ error: 'Unauthorized' });
try {
req.user = jwt.verify(token, SECRET);
next();
} catch { res.status(401).json({ error: 'Invalid token' }); }
}
2. Rate Limiting
Brute force ve DDoS saldırılarına karşı her endpoint'e rate limit koyun. IP başına dakikada 60 istek makul bir başlangıçtır. Hassas endpoint'ler (login, register) için daha sıkı limitler uygulayın.
const rateLimit = require('express-rate-limit');
app.use('/api/', rateLimit({ windowMs: 60000, max: 60 }));
app.use('/api/auth/login', rateLimit({ windowMs: 60000, max: 5 }));
3. Input Validation
Her gelen veriyi doğrulayın ve sanitize edin. Zod veya Joi ile schema validation yapın. SQL injection'a karşı parameterized query, XSS'e karşı output encoding kullanın.
4. CORS Yapılandırması
Access-Control-Allow-Origin: * kullanmayın. Sadece güvendiğiniz domain'leri whitelist'e alın. Credentials ile çalışıyorsanız wildcard zaten çalışmaz.
5. HTTPS Zorunluluğu
Tüm API trafiği HTTPS üzerinden gitmelidir. HTTP isteklerini 301 ile HTTPS'e yönlendirin. HSTS header'ı ekleyin.
API Tasarım Prensipleri ve Güvenli Endpoint Mimarisi
Profesyonel API tasarımı dört unsuru bir araya getirir: doğru protokol seçimi (REST CRUD için ideal, GraphQL flexible queries için, gRPC microservice-to-microservice için), kimlik doğrulama (OAuth 2.0 / OIDC, JWT access token, refresh token rotation), rate limiting (token bucket, sliding window, IP/user/API key bazlı) ve versiyonlama (URL versiyon /v1/, header versiyon, deprecation sürecleri). API endpoint güvenliği için input validation, prepared statement, CORS politikası, idempotency-key (POST için), webhook signature verification ve OpenAPI/Swagger dokümantasyonu modern standartlardır. Yüksek trafikli API'lerde Redis ile rate limit + cache, Kafka veya RabbitMQ ile asenkron iş kuyruğu, OpenTelemetry ile dağıtık izleme önerilir.