API'ler, günümüz uygulamalarının omurgasını oluştururken aynı zamanda saldırganlar için en cazip hedefler arasında yer alır. OWASP API Security Top 10, geliştiricilere ve güvenlik uzmanlarına en yaygın API zafiyetlerini ve bunları gidermek için pratik rehber sunar. Bu yazıda, API güvenliğinin temel prensiplerini, en kritik güvenlik açıklarını ve bu açıkları kapatmak için uygulanabilir adımları derinlemesine inceleyeceğiz.
OWASP API Security Top 10 Nedir?
OWASP (Open Web Application Security Project), API güvenliği konusunda sektörde en çok referans alınan kaynaktır. API Security Top 10 listesi, API'leri hedef alan en yaygın ve etkili saldırı vektörlerini sıralar. Bu liste düzenli olarak güncellenir ve 2023 sürümüyle birlikte API'ye özgü tehditler daha net tanımlanmıştır.
Bir API'deki tek bir güvenlik açığı, tüm veritabanına veya kritik sistemlere erişim sağlayabilir. API güvenliği, artık yalnızca opsiyonel bir katman değil, hayati bir gerekliliktir.
API Security Top 10 - En Yaygın Tehditler ve Korunma Yöntemleri
1. Bozulmuş Nesne Düzeyinde Yetkilendirme (BOLA)
BOLA, saldırganın bir kullanıcının kendi verilerine erişmek için kullandığı API çağrısındaki nesne tanımlayıcısını değiştirerek başka bir kullanıcının verilerine ulaşmasıdır. Örneğin, /api/user/123 isteğinde 123'ü 456 olarak değiştirmek. Korunmak için her istekte kullanıcının o nesneye erişim yetkisi olduğu sunucu tarafında doğrulanmalıdır. Ayrıca tahmin edilemez UUID'ler kullanmak da riski azaltır.
2. Bozulmuş Kullanıcı Kimlik Doğrulaması
Zayıf parola politikaları, token yönetimindeki hatalar veya session sabitleme gibi sorunlar bu kategoride yer alır. Korunma için güçlü parola kuralları, çok faktörlü kimlik doğrulama (MFA) ve kısa süreli token'lar kullanılmalıdır. Kimlik doğrulama akışları düzenli olarak test edilmelidir.
3. Aşırı Veri Pozlaması
API yanıtları, istemcinin ihtiyacından fazla veri döndüğünde ortaya çıkar. Örneğin, bir kullanıcı profili için yalnızca ad ve e-posta gerekirken tüm veritabanı kaydının döndürülmesi. Çözüm, yanıtları istemci spesifikasyonuna göre filtrelemek ve GraphQL gibi sorgu dillerinde talep edilen alanları sınırlamaktır.
4. Kaynak Eksikliği ve Hız Sınırlaması
Saldırganlar API'ye binlerce istek göndererek hizmet reddi (DoS) veya kaba kuvvet saldırısı düzenleyebilir. Hız sınırlaması (rate limiting), IP veya API anahtarı bazında istek sayısını sınırlandırır. Ayrıca payload boyutunu sınırlamak ve eşzamanlı bağlantı sayısını kontrol etmek de etkilidir.
5. Bozulmuş Fonksiyon Düzeyinde Yetkilendirme
Fonksiyon düzeyindeki zafiyetler, saldırganın normal kullanıcıların erişememesi gereken yönetici işlemlerini çağırmasına olanak tanır. Örneğin, silme işlemi için yalnızca yönetici rolünün doğrulanması gerekir. Rol tabanlı erişim kontrolü (RBAC) ve fonksiyon bazında yetkilendirme ile önlenir.
6. Kitlesel Atama
Saldırgan, API isteğine ekstra alanlar ekleyerek veritabanında yetkisiz değişiklikler yapabilir. Örneğin, isAdmin=true parametresi ekleyerek yönetici yetkisi almak. Korunmak için kullanıcının güncelleyebileceği alanlar beyaz listeyle tanımlanmalı ve tüm girdiler sıkı şekilde doğrulanmalıdır.
7. Güvenlik Yanlış Yapılandırması
Varsayılan ayarlar, gereksiz açık portlar, hata mesajlarının detaylı olması bu kategoriye girer. API sunucusunda HTTPS zorunlu olmalı, CORS politikaları doğru ayarlanmalı ve hata yanıtları minimum bilgi içermelidir. Düzenli güvenlik taramaları yapılmalıdır.
8. Enjeksiyon
SQL, NoSQL veya komut enjeksiyonu saldırıları, API'ye gelen verilerin yorumlayıcıya gönderilmeden önce sanitize edilmemesinden kaynaklanır. Parametreli sorgular, ORM kullanımı ve girdi doğrulaması temel önlemlerdir.
9. Yanlış Varlık Yönetimi
API sürümleri, belgelenmemiş eski uç noktalar, test ortamları vb. sıklıkla göz ardı edilir. Tüm API'lerin envanteri çıkarılmalı, kullanılmayan uç noktalar kapatılmalı ve her sürümün güvenliği sağlanmalıdır.
10. Yetersiz Loglama ve İzleme
Saldırıların tespit edilememesine yol açar. Tüm API istekleri loglanmalı, şüpheli etkinlikler için alarm mekanizmaları kurulmalı ve loglar düzenli olarak analiz edilmelidir.
API Güvenliği İçin Pratik İpuçları
- API anahtarlarını ve erişim token'larını asla istemci tarafında saklama; güvenli bir secret management çözümü kullanın. Bu konuda AWS Lambda ve Azure Functions için Secret Management yazımız faydalı olabilir.
- Her API uç noktası için en az yetki prensibiyle erişim kontrolü uygulayın.
- Düzenli sızma testleri yapın. Örneğin, endüstriyel sistemler için SCADA sistemlerinde Modbus protokol güvenlik açıkları test edilirken API'ler de ihmal edilmemelidir.
- Kullanıcıları social engineering ve phishing saldırılarına karşı bilinçlendirin; Phishing saldırılarını tespit ve engelleme rehberimizdeki adımları izleyin.
API Güvenliğinde Sık Yapılan Hatalar
- Güvenlik kontrollerini yalnızca istemci tarafında yapmak.
- API dokümantasyonunu kamuya açık bırakmak ve eski sürümleri hemen kaldırmamak.
- Hata mesajlarında SQL sorguları veya yığın izleri gibi hassas bilgilere yer vermek.
- Token'ları uzun süre geçerli bırakmak ve yenileme mekanizması kurmamak.
API güvenliği, sürekli bir süreçtir. OWASP API Security Top 10 listesini rehber edinerek uygulamanızı düzenli olarak değerlendirin ve tehditler evrildikçe savunmanızı güncelleyin.
Sık Sorulan Sorular
API güvenliğinde en kritik tehdit nedir?
OWASP API Security Top 10 listesinde ilk sırada yer alan Bozulmuş Nesne Düzeyinde Yetkilendirme (BOLA), saldırganların başka kullanıcıların verilerine erişmesine olanak tanır ve API güvenliğinin en sık rastlanan zafiyetidir.
API'lerde hız sınırlaması neden önemlidir?
Hız sınırlaması, kaba kuvvet saldırılarını ve hizmet reddi (DoS) saldırılarını engellemek için kritiktir. Ayrıca API kaynaklarının kötüye kullanılmasını önleyerek sistemin stabil çalışmasını sağlar.
OWASP API Security Top 10 listesini nasıl uygulayabilirim?
Listeyi temel alarak her bir zafiyet için test senaryoları hazırlayın, kod taramaları ve sızma testleri yapın. Ayrıca güvenlik politikalarınızı bu listeye göre güncelleyerek eğitim ve farkındalık programları düzenleyin.
API anahtarlarını güvenli bir şekilde nasıl saklarım?
API anahtarlarını asla kod içinde veya istemci tarafında saklamayın. Bunun yerine çevre değişkenleri, gizli yönetim hizmetleri (AWS Secrets Manager, Azure Key Vault) veya güvenli bir secret management çözümü kullanın.






