API güvenliği ve istek filtreleme
1) Neden ihtiyacınız var
API - dış ve iç platform sınırı. İsteklerin doğrulanması, yetkilendirilmesi, doğrulanması veya normalleştirilmesindeki herhangi bir hata, güvenlik açıklarının kullanılmasına (BOLA/IDOR, enjeksiyon, SSRF, büyük numaralandırma, kaynak tükenmesi) dönüşür. Amaç: Ölçülebilir SLO'lar ve risk kontrolü ile çevreden iş kurallarına kadar derinlemesine savunma oluşturun.
2) API Envanteri ve Sınıflandırması
API dizini: tüm hizmetlerin/uç noktaların, sahiplerin, sürümlerin, müşteri türlerinin (web, mobil, ortaklar), modun (genel/ortak/dahili), PII/finansal verilerin kaydı.
Kritiklik: Yüksek (finansal işlemler/yetkilendirme), Orta (profil okuma), Düşük (genel dizinler).
Saldırı yüzeyi: REST, GraphQL, gRPC, WebSocket, webhooks.
Durum: prod/evreleme/deneysel, amortisman politikası, token/anahtar ömrü.
Gölge/terk edilmiş API: ingrest günlükleri, eBPF/Service Mesh telemetrisi, bir dizin ile karşılaştırma yoluyla algılama.
3) Tehdit modeli (kısa)
Kimlik: belirteç kaçırma, oturum taahhüt, MitM, yeniden oynatma.
Yetkilendirme: BOLA/IDOR, yatay/dikey yükseltme.
Giriş: Enjeksiyonlar (SQL/NoSQL/LDAP), şablon/serileştirme, yol geçişi, başlıklar.
Trafik: DDoS/L7 seller, yavaş istekler, fantom retrays.
Entegrasyonlar: Güvensiz webhook'lar, URL parametreleri ile SSRF, dosya/tarama indirmeleri.
Mantık: bonusların kötüye kullanılması, yarış, idempotansın tutarsızlığı.
4) Temel güvenlik standardı (minimum)
1. TLS 1. 2 + her yerde; HSTS; Zayıf şifreler devre dışı bırakılır.
2. Kimlik doğrulama: İstemciler için OAuth2/OIDC, mTLS/veya HMAC - servisten servise.
3. Yetkilendirme: Merkezi PDP (RBAC/ABAC), Nesne Seviyesi Denetimi (BOLA).
4. Doğrulama: katı şema (OpenAPI/JSON Schema/Protobuf), ekstra alanlarla başarısızlık.
5. Limitler: oran/kotalar + patlama, istemci başına/IP başına/belirteç başına.
6. Yazma işlemlerinde idempotans, tekrarlara/yarışlara karşı koruma.
7. WAF/ağ geçidi filtreleme: yol/başlık normalleştirme, reddetme listeleri, payload-anti-patterns bloğu.
8. Sırlar: KMS/Vault, anahtar/sertifika rotasyonu, sızıntı kontrolü.
9. Gözlemlenebilirlik: izleme, güvenlik denetim günlükleri (kim/ne/ne zaman/sonuç), uyarılar.
10. Prosedürler: Playbook olayları, test vakaları ve düzenli pentest/DAST.
5) Kimlik doğrulama ve belirteç yönetimi
OAuth2/OIDC: kısa ömürlü erişim belirteçleri, kesinlikle OIDC'ye göre yenilenir; Audience/issuer/exp ağ geçidinde kontrol edilir.
JWT: RS256/ES256; Minimum istiridye seti; 'nbf/exp/aud' gereklidir; PII depolamanın yasaklanması. JWKS üzerinden anahtar rotasyonu.
DPoP/PoP: Tekrarlama/kaçırma riskini azaltmak için belirteci istemci anahtarına bağlayın.
Dahili sistemler ve güvenilir ortaklar için mTLS (CN/SAN kalifikasyonu, CRL/OCSP).
HMAC (signatures): deterministik kanonikleştirme (method + path + timestamp + nonce + body-hash); Geçerli zaman penceresi (30'lu ±).
Tarayıcı oturumları: SameSite = katı/gevşek, HttpOnly, Güvenli; CSRF koruması (çift gönderme/durum belirteçleri).
İstemci depolama: Mobil - güvenli depolama (Keychain/Keystore), hata ayıklama koruması, sabitleme sertifikaları.
6) Yetkilendirme (BOLA-first)
Nesne düzeyi: Her işlem belirli bir kaynağın hakkını denetler (kaynak sahibi/kapsam/nitelikler).
RBAC/ABAC: roller + nitelikler (ülke, segment, risk limitleri, KYC seviyesi)
Politikalar: varsayılan olarak reddet; Açıkça izin ver; Negatif vakalar için poliçe sürüm testleri.
Karar önbelleği: Değişen rollerde/segmentlerde adaptif TTL + engellilik.
7) İsteklerin filtrelenmesi ve normalleştirilmesi (ağ geçidi/WAF)
Normalleştirme: tekrarlanan eğik çizgilerin sıkıştırılması, yasaklama '../', bir kez kod çözme, boşlukları kesme/sıfır bayt.
Üstbilgiler: allow-list ('Host', 'Content-Type', 'Accept', 'Authorization', 'Date', 'Idempotency-Key', gerekli izleme başlıkları).
Yöntemler: Bir vücut olmadan 'GET/HEAD'; 'POST/PUT/PATCH' - 'application/json' türünde veya kesinlikle izin verilir.
Boyutlar: max-body, max-headers, max-path; Erken reddetme 413/431.
Dosyalar: MIME doğrulayıcı, antivirüs/sandbox, aktif içerik yasağı, görüntü geri dönüşümü/sterilizasyon.
URL yönlendirir/fetchi: SSRF bloğu (özel aralıkları/meta veri IP'sini reddeder, şema yalnızca 'https', izin verilen liste etki alanları).
SQL/NoSQL kalıpları: WAF kural setleri + sorguların sunucu parametreleştirilmesi yoluyla enjeksiyon imzaları.
Örnek Başlık İlkesi (Sözde Format)
deny_headers: ["X-Forwarded-Proto","X-Original-URL","Proxy-Connection","Destination"]
require_headers: ["Authorization" (для protected), "Content-Type" (для write)]
strip_duplicates: true max_header_count: 32 max_header_size: 16KB
8) Sınırlar, kotalar ve antibot koruması
Hız sınırlaması: token-bucket/leaky-bucket; Seviyeler - IP başına, API anahtarı başına, kullanıcı başına, org başına.
Kotalar: Günlük/aylık, yazma/kapsamlı yöntemler için ayrı.
Uyarlanabilirlik: Anomaliler altında dinamik sıkma (ani patlama/kimlik bilgisi doldurma).
Yavaş loris/yavaş POST: okuma/canlı tutma zaman aşımları, eşzamanlı bağlantı kısıtlaması.
Antibot: cihaz-parmak izi, davranışsal işaretler, artan risk için iş kanıtı/captcha, torus/proxy ağlarının listesi.
IP kontrolü: geo/ASN filtreleri, "kirli" alt ağların listelerini reddetmek, ortaklar/yönetici panelleri için listelere izin vermek.
9) Giriş verilerinin ve devrelerinin doğrulanması
Fail-closed: Şemada başarısız olan her şey 400'dür. Ekstra alanlar - reddet.
Türler/aralıklar: sayılar, tarihler (UTC/ISO-8601), enum değerleri, çizgi uzunlukları, regexps.
JSON kalitesi: maksimum yuvalama, büyük dizilerin/anahtarların yasaklanması, kanonik düzen (isteğe bağlı).
İş doğrulama: 'Idempotency-Key'e göre idempotency; Dolandırıcılıkla mücadele kuralları (işlem sıklığı sınırları, miktar sınırları).
GraphQL: derinlik/karmaşıklık sınırları, izin verilen sorgular, alan başına yetkilendirme.
gRPC: sıkı Protobuf şemaları, zorunlu alanlar, mesaj boyutu sınırları.
10) Webhook'lar ve harici aramalar
İmzalar: Zaman damgalı/nonce HMAC; İşlemeden önce doğrulama; Pencere + - 5 dk.
Teslimat: Üstel duraklama ve jitter ile Retrai; max-girişimleri; Olay kimliği veri tekilleştirme
Satıcı IP izin listesi ayrı alt alan/yol; minimal hosting yığını.
Cevaplar: 2xx sadece başarılı bir dahili kayıttan sonra; Aksi takdirde açık kodlu 4xx/5xx.
Giden SSRF kontrolü: geri çağrılan URL - allow-list olduğunda, özel adresleri reddedin.
11) Şifreleme ve gizli yönetim
Kanalda: TLS 1. 2+/1. 3, sabitleme, sıkı şifre politikası.
Tek başına: DB/nesne depolama şifrelemesi, PII/finansal veriler için ayrı anahtarlar.
KMS/Vault: sırların merkezi depolanması, kısa TTL, otomatik rotasyon.
Anahtarlar ve sertifikalar: ortamlar için ayrı; Konuların denetlenmesi; kütüklere çıkış yasağı.
Token-introspection: çevrimdışı iptal listeleri, kısa 'exp'.
12) Gözlemlenebilirlik, denetim ve yanıt
Güvenlik günlükleri: kimlik doğrulama girişimleri/başarıları, yetkilendirme hataları, hız sınırı olayları, rol/sınır değişiklikleri.
İzleme: Korelasyon-ID uçtan uca; Harici çağrı izleme.
Metrikler: RPS, P95/P99 gecikme, kodla hata oranı, 401/403/429 paylaşımı, isabet oranı limitleri, anormallikler.
Uyarılar: 401/403/429 ani artışlar, 5xx büyüme, sık sık idempotency çakışmaları, QL-karmaşıklık grafiğinin keskin sapmaları.
Playbooks: Anahtarları/belirteçleri engelleme, kuralları hızla geri alma, reddetme listesini ısıtma, servis sahiplerine bildirme.
Adli tıp: tartışmalı yükün korunması (güvenli PII düzenleme ile), izole edilmiş bir stantta tekrar oynatma.
13) Hatalar ve müşteriye verilen cevaplar
Tekdüzen hata biçimi (kod, mesaj, trace-id, kategori).
Sızıntı yok: SQL, tablo adları, dahili idies ifşa etmeyin; "Neden olmasın" yerine 403.
Kodlar: 400 (doğrulama), 401 (kimlik doğrulama yok), 403 (hak yok), 404 (maske varlığı), 405/406, 413/429, 500/503.
Retry-İpuçları: для 429 - 'Retry-After'; idempotency için - aynı anahtarla tekrarlama tavsiyesi.
14) Mimari desenler
Zero-Trust: mTLS, tüm hizmetler arasında açık yetkilendirme, minimum ayrıcalıklar.
API ağ geçidi + WAF + servis ağı: görevlerin ayrılması - çevre, L7 politikaları, dahili kimlik doğrulama.
Kanarya/Mavi-Yeşil: Yeni filtrasyon kurallarını gözetim altında aşamalı olarak dağıtın.
Başarısız-kapalı: Kritik yazı için, yanlış çalışmaya izin vermektense güvenli bir şekilde reddetmek daha iyidir.
Backpressure: kuyruklar/tamponlar, devre kesici, zaman aşımları/bütçeler.
15) Pratik kurallara örnekler (sözde yapılandırma)
15. 1 Yolları ve yöntemleri sınırlama
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 Idempotency
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. 3 İstek İmzası (HMAC)
signature:
scheme: "HMAC-SHA256"
required_headers: ["X-Signature","X-Timestamp","X-Nonce"]
allowed_drift: 300s string_to_sign: METHOD + "\n" + PATH + "\n" + SHA256(body) + "\n" + X-Timestamp + "\n" + X-Nonce
15. 4 SSRF koruması
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. 5 GraphQL sınırı
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) iGaming/Finansın Özellikleri
Segment sınırları: CCM/ülke/risk profiline bağlı olarak.
Zaman pencereleri: para yatırma/çekme sıklığı kuralları, işlemler arasında "soğutma".
Bonus kötüye kullanımı önleme: hesap/cihaz/IP/ödeme aracında tutarlı kilitler.
Düzenleyici gerekliliklerin denetimi: eylem ve karar günlüklerinin depolanması (KYC/AML), saklama süreleri, değişmeyen günlükler.
17) Prod Hazır Kontrol Listesi
- Tam API dizini ve veri akış haritası (PII/finansal etiketli).
- OpenAPI/Protobuf şemaları, doğrulama testleri ve CI'daki sözleşmeler.
- mTLS/HMAC/OAuth2 yapılandırılmış; Kısa TTL jetonları; Anahtar rotasyon.
- BOLA testleri ve negatif yetkilendirme durumları; Merkezi PDP.
- Sınırlar/kotalar/anti-bot, yavaş lorise karşı koruma; IP filtreleri.
- WAF/ağ geçidi normalleştirme kuralları, anti-enjeksiyon imzaları.
- Yazma işlemlerinin idempotency; Tekrar oynatmaya karşı koruma.
- Webhook imzaları ve izin listesi; Yalıtılmış uç noktalar.
- KMS/Vault Sırları; şifreli depolar; Anomalileri uyarır.
- Gösterge tabloları, uyarılar, denetim günlükleri; Playbook olaylarında çalıştı.
- Düzenli pentest/DAST/SAST, güvenlik açığı parçaları ve yama indirme.
18) Antipatterns (mümkün değildir)
Çevresinde katı TLS olmadan 'X-Forwarded-' güven.
Keyfi 'Content-Type've' soft 'JSON şemalarını kabul edin.
Hatırlama/rotasyon olmadan uzun ömürlü JWT'ler.
Merkezi politikalar olmadan rolleri ve iş kurallarını kodda karıştırın.
Sırlar/PII ile günlükleri; Dışa doğru ayrıntılı 500-mesaj.
"Geçici" sınır ve izin olmaksızın açık uç noktaları.
19) Sürüm ve Deprekate
Yoldaki/başlıktaki sürümler; destek politikası (örn. N-2).
Duyurular: kullanımdan kaldırma, eski sürümlerin kullanımını izleme, kontrollü kapatma için son tarihler.
Uyumluluk: müşteri/ortak sözleşmeleri ve test matrisleri.
20) Güvenlik testi
Şemaların/politikaların sözleşme testleri, bulanık girdiler, negatif auth.
Limitli/kotalı performans profilleri, koruma testi (kaos trafiği).
Kırmızı takım/bug-bounty: BOLA komut dosyaları, SSRF, imzalar/tekrarlar, GraphQL karmaşıklığı.
TL; DR
1. API dizini + katı şemalar.
2. Müşteriler için OAuth2/OIDC, mTLS/HMAC içeride.
3. BOLA kaynak başına çevre (ABAC/RBAC).
4. Filtreleme: Yolların/başlıkların, sınırların, WAF kurallarının normalleştirilmesi.
5. Idempotans, imzalar, tekrar oynatma/SSRF koruması.
6. KMS/Vault ve gizli rotasyon.
7. Gözlemlenebilirlik, uyarılar, oyun kitapları.