Skip to main content
Siber Güvenlik

API Güvenliği: Web Servislerinizi Koruma Stratejileri

Mart 14, 2026 10 dk okuma 13 views Raw
API güvenliği ve web servisleri koruma stratejileri
İçindekiler

API Güvenliği Neden Bu Kadar Önemli?

Modern yazılım dünyasında API'ler (Application Programming Interface), uygulamalar arasındaki iletişimin temel taşlarıdır. Mobil uygulamalardan IoT cihazlarına, mikroservis mimarilerinden üçüncü parti entegrasyonlara kadar her yerde API'ler kullanılmaktadır. Ancak bu yaygın kullanım, API'leri siber saldırganlar için son derece cazip hedefler haline getirmektedir.

Gartner'ın araştırmalarına göre, 2025 yılı itibarıyla web uygulamalarına yönelik saldırıların büyük çoğunluğu API'ler üzerinden gerçekleşmektedir. API güvenliği artık "olsa iyi olur" değil, "olmazsa olmaz" bir gerekliliktir. Bir API güvenlik ihlali, müşteri verilerinin sızmasından finansal kayıplara, itibar zedelenmesinden yasal yaptırımlara kadar ciddi sonuçlar doğurabilir.

"Bir zincir, en zayıf halkası kadar güçlüdür. Modern yazılım sistemlerinde bu en zayıf halka genellikle güvenliği ihmal edilmiş API'lerdir."

OWASP API Security Top 10

OWASP (Open Web Application Security Project), API güvenliği konusunda en yetkili kaynaklardan biridir. OWASP API Security Top 10 listesi, en kritik API güvenlik risklerini sınıflandırır ve her geliştirici tarafından bilinmelidir.

1. Broken Object Level Authorization (BOLA)

BOLA, bir API'nin nesne düzeyinde yetkilendirme kontrollerini düzgün yapmadığı durumlarda ortaya çıkar. Saldırgan, başka kullanıcılara ait verilere erişmek için nesne tanımlayıcılarını (ID) manipüle edebilir.

// Güvensiz API çağrısı
GET /api/users/123/orders

// Saldırgan farklı bir kullanıcının siparişlerine erişebilir
GET /api/users/456/orders

Bu tür saldırılardan korunmak için her API çağrısında nesne düzeyinde yetkilendirme kontrolü yapılmalı ve kullanıcının yalnızca kendi verilerine erişebildiğinden emin olunmalıdır.

2. Broken Authentication

Kimlik doğrulama mekanizmalarındaki zafiyetler, saldırganların meşru kullanıcılar gibi davranmasına olanak tanır. Zayıf şifre politikaları, token yönetimi hataları ve brute-force saldırılarına karşı yetersiz koruma bu kategoriye girer.

3. Broken Object Property Level Authorization

API'ler genellikle gereğinden fazla veri döndürür. Kullanıcının görmemesi gereken nesne özellikleri yanıtta yer alabilir veya kullanıcı değiştirmemesi gereken alanları güncelleyebilir.

4. Unrestricted Resource Consumption

API çağrılarının kaynak tüketimi sınırlandırılmadığında, saldırganlar aşırı isteklerle sistemi çökertebilir veya maliyetli operasyonları tekrar tekrar çağırarak finansal zarar verebilir.

5. Broken Function Level Authorization

Farklı yetki seviyelerindeki kullanıcıların erişebileceği API fonksiyonlarının düzgün ayrılmaması, normal kullanıcıların yönetici fonksiyonlarına erişmesine neden olabilir.

6. Unrestricted Access to Sensitive Business Flows

İş akışlarına sınırsız erişim, otomatik araçlarla kötüye kullanılabilir. Örneğin, toplu bilet satın alma botları veya otomatik hesap oluşturma araçları bu kategoriye girer.

7. Server-Side Request Forgery (SSRF)

API'nin kullanıcı tarafından sağlanan URL'leri doğrulamadan sunucu tarafında istek göndermesi, iç ağa erişim sağlanmasına yol açabilir.

8. Security Misconfiguration

Yanlış yapılandırılmış güvenlik başlıkları, gereksiz HTTP metotlarının açık bırakılması, varsayılan ayarların değiştirilmemesi gibi konfigürasyon hataları ciddi güvenlik açıkları oluşturur.

9. Improper Inventory Management

Eski, kullanılmayan veya belgelenmemiş API endpoint'lerinin aktif kalması, saldırganlara keşfedilmemiş giriş noktaları sağlar.

10. Unsafe Consumption of APIs

Üçüncü parti API'lerin yanıtlarına körü körüne güvenmek, güvenlik zafiyetlerine neden olabilir. Dış kaynaklardan gelen veriler de doğrulanmalıdır.

Kimlik Doğrulama Mekanizmaları

API güvenliğinin ilk ve en kritik katmanı kimlik doğrulamadır. Modern API'lerde kullanılan başlıca kimlik doğrulama yöntemlerini inceleyelim.

API Anahtarları (API Keys)

API anahtarları, en basit kimlik doğrulama yöntemidir. Her istemciye benzersiz bir anahtar atanır ve bu anahtar her istekle birlikte gönderilir.

// API anahtarı ile istek gönderme
GET /api/data HTTP/1.1
Host: api.example.com
X-API-Key: sk_live_abc123def456ghi789

API anahtarlarının avantajları basitlik ve kolay entegrasyondur. Ancak tek başına yeterli güvenlik sağlamazlar çünkü anahtarlar kolayca sızdırılabilir, kullanıcı bazlı yetkilendirme yapılamazlar ve genellikle uzun ömürlü oldukları için ele geçirilme riski yüksektir.

OAuth 2.0

OAuth 2.0, modern API güvenliğinin standart protokolüdür. Yetkilendirme çerçevesi olarak tasarlanmış olan OAuth 2.0, kullanıcıların üçüncü parti uygulamalara sınırlı erişim vermesini sağlar.

OAuth 2.0'ın temel akışları şunlardır:

  • Authorization Code Flow: Web uygulamaları için en güvenli akış. Sunucu tarafında çalışır ve gizli anahtarlar korunur.
  • Client Credentials Flow: Makineden makineye iletişim için kullanılır. Kullanıcı etkileşimi gerektirmez.
  • PKCE (Proof Key for Code Exchange): Mobil ve tek sayfa uygulamaları için tasarlanmış, Authorization Code Flow'un güvenli versiyonudur.
  • Device Authorization Flow: Sınırlı giriş imkanına sahip cihazlar (akıllı TV, IoT) için kullanılır.
// OAuth 2.0 Authorization Code Flow örneği
// 1. Yetkilendirme isteği
GET /authorize?
  response_type=code&
  client_id=CLIENT_ID&
  redirect_uri=https://app.example.com/callback&
  scope=read:users&
  state=random_state_value

// 2. Token değişimi
POST /token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=AUTHORIZATION_CODE&
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
redirect_uri=https://app.example.com/callback

JSON Web Token (JWT)

JWT, kimlik doğrulama ve bilgi paylaşımı için yaygın olarak kullanılan bir token standardıdır. Üç bölümden oluşur: Header, Payload ve Signature.

// JWT yapısı
{
  "header": {
    "alg": "RS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "user123",
    "name": "Ahmet Yılmaz",
    "role": "admin",
    "iat": 1710000000,
    "exp": 1710003600
  },
  "signature": "..."
}

JWT güvenliği için dikkat edilmesi gereken noktalar şunlardır:

  • Asla "alg: none" kabul etmeyin
  • Güçlü imzalama algoritmaları kullanın (RS256 veya ES256)
  • Token süresini kısa tutun (genellikle 15-60 dakika)
  • Refresh token mekanizması kullanın
  • Token'ları güvenli şekilde saklayın (HttpOnly cookie tercih edin)
  • Token iptal mekanizması (blacklist) oluşturun

Yetkilendirme (Authorization) Stratejileri

Kimlik doğrulama "kim olduğunuzu" belirlerken, yetkilendirme "ne yapabileceğinizi" kontrol eder. API'lerde etkili yetkilendirme için çeşitli yaklaşımlar kullanılır.

Rol Tabanlı Erişim Kontrolü (RBAC)

RBAC, kullanıcılara roller atayarak erişim haklarını yönetir. Her rol belirli izinlere sahiptir ve kullanıcılar bir veya birden fazla role atanabilir.

Rol Okuma Yazma Güncelleme Silme Yönetim
Okuyucu Evet Hayır Hayır Hayır Hayır
Editör Evet Evet Evet Hayır Hayır
Yönetici Evet Evet Evet Evet Evet

Öznitelik Tabanlı Erişim Kontrolü (ABAC)

ABAC, daha esnek bir yaklaşımdır. Kullanıcı öznitelikleri, kaynak öznitelikleri, ortam koşulları ve istenen işlem gibi çoklu faktörlere dayalı kararlar alır. Örneğin, "departman yöneticisi, mesai saatleri içinde, kendi departmanının verilerine erişebilir" gibi kurallar tanımlanabilir.

Scope Tabanlı Yetkilendirme

OAuth 2.0 ile birlikte kullanılan scope'lar, API erişimini granüler şekilde kontrol etmeyi sağlar. Her token belirli scope'lara sahiptir ve yalnızca bu scope'ların izin verdiği işlemleri gerçekleştirebilir.

Rate Limiting ve Throttling

Rate limiting, API'nizin aşırı kullanımını ve kötüye kullanımını önlemek için kritik bir güvenlik mekanizmasıdır. Doğru uygulandığında hem DDoS saldırılarını hem de brute-force girişimlerini etkili şekilde engelleyebilir.

Rate Limiting Stratejileri

  • Sabit Pencere (Fixed Window): Belirli bir zaman diliminde (örneğin dakikada 100 istek) izin verilen istek sayısını sınırlar.
  • Kayan Pencere (Sliding Window): Sabit penceredeki sınır aşımı sorunlarını çözer, daha yumuşak bir geçiş sağlar.
  • Token Bucket: Belirli aralıklarla yenilenen tokenlar kullanır. Ani yoğunluk artışlarına izin verirken uzun vadede ortalama hızı korur.
  • Leaky Bucket: İstekleri sabit bir hızda işler, fazla istekleri kuyruğa alır veya reddeder.
// Rate limiting yanıt başlıkları
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1710003600
Retry-After: 60

Rate limiting uygulanırken istemcilere mevcut kota durumu hakkında bilgi veren başlıklar eklemek, geliştirici deneyimini iyileştirir ve istemcilerin isteklerini akıllıca yönetmesini sağlar.

Input Validation ve Veri Doğrulama

API'lere gelen her veri potansiyel olarak tehlikeli kabul edilmelidir. Güvenli bir API, gelen tüm verileri titizlikle doğrular ve temizler.

Doğrulama Kuralları

  • Tip Kontrolü: Beklenen veri tipinin doğrulanması (string, integer, boolean vb.)
  • Uzunluk Sınırlaması: Girdilerin minimum ve maksimum uzunluk kontrolü
  • Format Doğrulama: E-posta, telefon numarası, tarih gibi formatların regex ile kontrolü
  • Whitelist Yaklaşımı: Yalnızca bilinen iyi değerlere izin verme
  • Sanitization: HTML, SQL ve diğer enjeksiyon saldırılarına karşı veri temizleme
// ASP.NET Core'da model doğrulama örneği
public class CreateUserRequest
{
    [Required]
    [StringLength(100, MinimumLength = 2)]
    public string Name { get; set; }

    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$")]
    public string Password { get; set; }
}

JSON Schema Doğrulama

API isteklerini JSON Schema ile doğrulamak, yapısal bütünlüğü sağlamanın etkili bir yoludur. JSON Schema, beklenen veri yapısını tanımlayan ve gelen verilerin bu yapıya uygunluğunu kontrol eden bir standarttır.

Şifreleme ve TLS

API iletişiminde verilerin şifrelenmesi, bilgi gizliliğinin korunması için zorunludur. TLS (Transport Layer Security), istemci ile sunucu arasındaki trafiğin şifrelenmesini sağlar.

TLS Best Practices

  • TLS 1.2 veya tercihen TLS 1.3 kullanın
  • Eski protokolleri (SSL 3.0, TLS 1.0, TLS 1.1) devre dışı bırakın
  • Güçlü cipher suite'ler seçin
  • HSTS (HTTP Strict Transport Security) başlığını etkinleştirin
  • Sertifika pinning uygulayın (mobil uygulamalar için)
  • Let's Encrypt gibi otomatik sertifika yenileme çözümleri kullanın

Veri Şifreleme Katmanları

Uçtan uca güvenlik için yalnızca aktarım katmanında değil, depolama ve uygulama katmanlarında da şifreleme uygulanmalıdır:

  • Aktarım Şifreleme: TLS ile ağ üzerindeki trafiğin korunması
  • Depolama Şifreleme: Veritabanındaki hassas verilerin AES-256 ile şifrelenmesi
  • Alan Düzeyinde Şifreleme: Kredi kartı numaraları, kişisel veriler gibi hassas alanların ayrıca şifrelenmesi

Loglama ve İzleme

Etkili loglama ve izleme, güvenlik olaylarının tespit edilmesi, soruşturulması ve önlenmesi için kritik öneme sahiptir. API güvenliği için kapsamlı bir izleme stratejisi oluşturmak, olası saldırıları erken aşamada tespit etmenizi sağlar.

Loglanması Gereken Olaylar

  • Başarısız kimlik doğrulama girişimleri
  • Yetkilendirme hataları (403 yanıtları)
  • Rate limit aşımları
  • Input validation hataları
  • Olağandışı trafik desenleri
  • Hassas verilere erişim girişimleri
  • API yapılandırma değişiklikleri

İzleme ve Uyarı Sistemleri

Gerçek zamanlı izleme araçları kullanarak anomalileri tespit edin. Otomatik uyarı kuralları oluşturun: belirli bir sürede çok fazla başarısız giriş denemesi, beklenmeyen coğrafi konumlardan gelen istekler, normalden çok daha yüksek trafik hacimleri gibi durumlar için anlık bildirimler ayarlayın.

API Gateway Güvenliği

API Gateway, API'leriniz için tek bir giriş noktası oluşturarak güvenlik politikalarının merkezi olarak uygulanmasını sağlar. Modern API gateway çözümleri birçok güvenlik özelliğini yerleşik olarak sunar.

API Gateway'in Sağladığı Güvenlik Özellikleri

  • Merkezi Kimlik Doğrulama: Tüm API isteklerinin gateway seviyesinde doğrulanması
  • Rate Limiting: İstemci başına veya endpoint başına istek sınırlaması
  • IP Filtreleme: Whitelist ve blacklist ile erişim kontrolü
  • SSL Terminasyonu: TLS işlemlerinin gateway'de sonlandırılması
  • İstek/Yanıt Dönüştürme: Hassas verilerin filtrelenmesi
  • WAF Entegrasyonu: Web Application Firewall ile ek koruma katmanı

Popüler API gateway çözümleri arasında Kong, AWS API Gateway, Azure API Management, Apigee ve NGINX yer almaktadır. Seçim yaparken ölçeklenebilirlik, eklenti ekosistemi, izleme yetenekleri ve maliyet faktörlerini değerlendirin.

Güvenlik Başlıkları (Security Headers)

API yanıtlarında doğru güvenlik başlıklarının kullanılması, birçok yaygın saldırı vektörünü engellemek için gereklidir.

Başlık Amacı Örnek Değer
Content-Security-Policy XSS saldırılarını önler default-src 'self'
X-Content-Type-Options MIME type sniffing'i engeller nosniff
X-Frame-Options Clickjacking saldırılarını önler DENY
Strict-Transport-Security HTTPS zorunlu kılar max-age=31536000; includeSubDomains
X-XSS-Protection Tarayıcı XSS filtresini etkinleştirir 1; mode=block
Cache-Control Hassas verilerin önbelleklenmesini önler no-store, no-cache

API Penetrasyon Testi

Düzenli penetrasyon testleri, API güvenlik açıklarının keşfedilmesi ve giderilmesi için vazgeçilmezdir. Penetrasyon testi hem otomatik araçlarla hem de manuel testlerle yapılmalıdır.

Otomatik Güvenlik Tarama Araçları

  • OWASP ZAP: Açık kaynaklı güvenlik tarayıcısı, API'ler dahil web uygulamalarının güvenliğini test eder
  • Burp Suite: Kapsamlı web güvenlik test platformu, API güvenlik testleri için güçlü özellikler sunar
  • Postman: API geliştirme aracı olmasının yanı sıra güvenlik testleri için de kullanılabilir
  • Nuclei: Şablon tabanlı güvenlik tarayıcısı, hızlı ve esnek tarama imkanı sağlar

Manuel Test Senaryoları

Otomatik araçların tespit edemeyeceği iş mantığı zafiyetlerini bulmak için manuel testler de yapılmalıdır. Bu testlerde yetkilendirme bypass denemeleri, iş akışı manipülasyonu, race condition testleri ve hata mesajlarından bilgi sızıntısı kontrolleri gerçekleştirilmelidir.

API Güvenliği Kontrol Listesi

API geliştirme sürecinizde aşağıdaki kontrol listesini kullanarak güvenlik seviyenizi değerlendirin:

  • Tüm endpoint'lerde kimlik doğrulama uygulanıyor mu?
  • Nesne düzeyinde yetkilendirme kontrolleri yapılıyor mu?
  • Rate limiting aktif mi?
  • Tüm girdiler doğrulanıyor mu?
  • TLS 1.2 veya üstü kullanılıyor mu?
  • Hassas veriler maskeleniyor mu?
  • Güvenlik logları düzgün tutuluyor mu?
  • API belgeleri güncel mi?
  • Eski endpoint'ler devre dışı bırakılmış mı?
  • Düzenli güvenlik taramaları yapılıyor mu?
  • CORS politikaları doğru yapılandırılmış mı?
  • Hata mesajları gereksiz bilgi sızdırmıyor mu?

CI/CD Pipeline'da API Güvenliği

Güvenliği geliştirme sürecinin en başından itibaren entegre etmek (Shift-Left Security), güvenlik açıklarının erken tespit edilmesini ve düzeltilmesini sağlar.

Pipeline'a Entegre Edilecek Güvenlik Kontrolleri

  • Statik Kod Analizi (SAST): Kaynak kodundaki güvenlik açıklarının tespiti
  • Bağımlılık Tarama: Kullanılan kütüphanelerdeki bilinen zafiyetlerin kontrolü
  • Dinamik Güvenlik Testi (DAST): Çalışan uygulamaya yönelik otomatik güvenlik taraması
  • API Sözleşme Testi: OpenAPI/Swagger spesifikasyonuna uygunluk kontrolü
  • Gizli Bilgi Tarama: Kodda hardcoded şifre, API anahtarı gibi bilgilerin tespiti

Sonuç ve Öneriler

API güvenliği, tek seferlik bir görev değil, sürekli bir süreçtir. Tehditlerin sürekli evrildiği bir ortamda, güvenlik stratejinizi de düzenli olarak güncellemeli ve iyileştirmelisiniz.

API güvenliği yolculuğunuzda şu temel prensipleri her zaman aklınızda tutun:

  • Derinlemesine Savunma: Tek bir güvenlik katmanına güvenmeyin, birden fazla katman oluşturun
  • En Az Yetki İlkesi: Her kullanıcı ve servis yalnızca ihtiyaç duyduğu minimum yetkiye sahip olmalıdır
  • Varsayılan Olarak Güvenli: Yeni endpoint'ler ve özellikler varsayılan olarak kısıtlı olmalıdır
  • Sürekli İzleme: Güvenlik olaylarını gerçek zamanlı izleyin ve hızlı yanıt verin
  • Güvenlik Kültürü: Tüm ekip üyelerinin güvenlik bilincine sahip olmasını sağlayın

API güvenliği konusunda yatırım yapmak, uzun vadede veri ihlallerinin maliyetinden çok daha düşüktür. Güvenli API'ler tasarlamak, müşterilerinizin güvenini kazanmanın ve sürdürmenin en etkili yollarından biridir.

Bu yazıyı paylaş