logologo
Ai badge logo

Bu madde yapay zeka desteği ile üretilmiştir.

API Güvenlik Testi

Bilişim Ve İletişim Teknolojileri+1 Daha
fav gif
Kaydet
viki star outline

Uygulama Programlama Arayüzleri (API'ler), modern yazılım geliştirme süreçlerinin temel yapı taşlarından biridir. API'ler sayesinde farklı sistemler birbiriyle güvenli ve esnek biçimde haberleşebilir. Ancak bu geniş kullanım alanı, API'leri aynı zamanda potansiyel güvenlik tehditlerine karşı savunmasız hâle getirmektedir. Bu bağlamda API güvenlik testleri, yalnızca işlevselliği değil; aynı zamanda gizlilik, bütünlük ve erişilebilirlik ilkeleri doğrultusunda bir API'nin güvenilirliğini ölçmek amacıyla öneme sahiptir. 

API Mimarisi ve Güvenlik Gereklilikleri

RESTful API Yapısı ve Temel Mimarisi

REST (Representational State Transfer), 2000 yılında Roy Fielding tarafından tanımlanan bir yazılım mimarisi stilidir. Modern web uygulamaları içerisinde RESTful API'ler, uygulamalar arasında veri paylaşımını sağlayan, HTTP protokolü üzerine kurulu bir yapı sunar.


REST mimarisi şu temel ilkeler üzerine kuruludur:


  • Durumsuzluk (Stateless): Her istemci isteği, gerekli tüm bilgileri içinde barındırır; sunucu, önceki işlemleri hatırlamaz.
  • Tekdüze Arayüz (Uniform Interface): Tüm kaynaklara aynı şekilde erişim sağlanır.
  • İstemci-Sunucu Ayrımı (Client-Server): Arayüz ve veri katmanı birbirinden bağımsızdır.
  • Önbellekleme (Cacheability): Sunucu, yanıtların önbelleğe alınıp alınamayacağını belirtmelidir.
  • Katmanlı Sistem (Layered System): API sunucuları arasına proxy ve geçit sunucular konulabilir.
  • İsteğe Bağlı Kod Transferi (Code-on-Demand): İstemciye çalıştırılabilir kod gönderilebilir.


REST mimarisi genel yapısı aşağıdaki gibidir.

[Client] ←HTTP GET/POST/PUT/DELETE→ [API Gateway] → [Backend Services]
                                                 ↘ [Database]

Bu yapı, istemcinin HTTP istekleri göndererek API ile etkileşime geçmesini, API'nin iş mantığını çalıştırmasını ve gerekli veriyi dönmesini sağlar.

HTTP Metotları ve Veri Formatı

RESTful API’ler, HTTP protokolünün sunduğu yöntemleri (verblar) kullanır:


  • GET: Veri alır
  • POST: Yeni veri oluşturur
  • PUT: Veriyi günceller (tam değişim)
  • PATCH: Veriyi kısmi olarak değiştirir
  • DELETE: Veriyi siler


HTTP istekleri çoğunlukla JSON (JavaScript Object Notation) formatında veri iletir. JSON, hem insanlarca okunabilir hem de makinelerce ayrıştırılabilir bir yapı sunar. Tipik bir


REST API yanıtı şu bileşenleri içerir:


  • HTTP Status Code (örn. 200, 400, 401)
  • Message
  • Timestamp, Datetime
  • Data (JSON gövdesi)

RESTful API Güvenlik Gereklilikleri

RESTful API'lerin yayın ağlar üzerinden erişilebilir olması, farklı türdeki siber saldırılara açık hale gelmesine neden olmaktadır. Bu kapsamda öne çıkan güvenlik gereklilikleri şunlardır:

Kimlik Doğrulama (Authentication)

RESTful API'ler çoğunlukla JWT (JSON Web Token) veya OAuth 2.0 protokolleri ile kimlik doğrulama yapar. Base64 kodlu örnek JWT yapısı aşağıdaki gibidir:


Header:  { "alg": "HS256", "typ": "JWT" }
Payload: { "sub": "user", "role": "admin", "exp": 1712345678 }
Signature: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload))


JWT üç bileşenden oluşur:


  • Header: Algoritma ve tür bilgisi
  • Payload: Kullanıcıya ilişkin veriler ve haklar
  • Signature: Token'ın değişmediğini ispatlayan imza


JWT’ler, sunucuya her istekle birlikte gönderilir ve sunucu tarafından imza doğrulaması yapılır.

Yetkilendirme (Authorization)

Kullanıcı rolüne göre kaynak erişimi kontrol edilir. Hatalı konumlandırılmış yetkilendirme mekanizmaları, yetkisiz kullanıcıların sistemde işlem yapmasına neden olabilir. API seviyesinde hem object-level hem de function-level erişim sınırlandırmaları uygulanmalıdır.

Girdi Doğrulama ve Çıktı Kontrolü

SQL Injection, XSS, Mass Assignment, CSRF gibi saldırılar, yetersiz girdi/çıktı denetimi nedeniyle meydana gelir.

Rate Limiting ve Oturum Yönetimi

Sistem kaynaklarının kötüye kullanımını önlemek için:

  • API başına saniyede istek limiti (Rate Limiting)
  • Oturum süresi yönetimi ve token süre sonu (expiry) ayarları yapılmalıdır.

İzleme ve Loglama

API erişimleri, hatalar ve şüpheli davranışlar loglanmalı; sistem yöneticileri uyarılmalıdır. Loglar dış müdahaleye karşı bütünlük korumalı şekilde saklanmalıdır.

OpenAPI Standartları ve Şemalandırma

OpenAPI Specification (OAS), REST API’lerin standart bir biçimde tanımlanmasını sağlar. JSON veya YAML biçiminde yazılan bu belgeler, hem insanlar hem makineler tarafından okunabilir ve test/otomasyon işlemlerine temel teşkil eder.


Basit bir OpenAPI JSON Tanımı aşağıdaki gibidir:

{
  "openapi": "3.0.0",
  "info": {
    "title": "Employee API",
    "version": "1.0.0"
  },
  "paths": {
    "/employee": {
      "get": {
        "summary": "Get all employees",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Employee"
                }
              }
            }
          }
        }
      }
    }
  }
}

Bu yapı sayesinde:


  • Endpoint listesi ve açıklamaları yapılabilir
  • Yanıt türleri tanımlanabilir
  • Otomatik testler ve dokümantasyon üretilebilir

Mimaride API Gateway Kullanımı

Uygulamalarda API Gateway kullanımının güvenlik açısından avantajları:


  • Tekil giriş noktası sunar
  • Rate limiting uygular
  • JWT token’ı kontrol ederek kimlik doğrulama sağlar
  • Uygun filtreleme ve loglama yapabilir.


Gateway ile API Güvenlik Katmanı aşağıdaki gibidir:

[Client] → [API Gateway] → [Auth Service] → [Resource API]
                    ↘ Logging / Throttling / Token Check

API Güvenlik Testi Yöntemleri

API güvenlik testi, bir API’nin yalnızca doğru çalıştığını değil; aynı zamanda saldırılara karşı dayanıklı, yetkisiz erişime kapalı ve güvenli bir şekilde veri taşıdığını da doğrulamak amacıyla uygulanır. Özellikle RESTful API'ler için, bu testlerin hem manuel hem de otomasyonla desteklenmiş olması gerekir.

Otomatik Test Araçları ve Teknikleri

Manuel API testleri zaman alıcı, insan hatasına açık ve büyük sistemlerde sürdürülemezdir. Bundan dolayı, otomatik API testleri tercih edilmektedir. Otomatik API testleri, zaman kazandırıcı, hata azaltıcı, her zaman ve her yerden çalıştırılabilir ve doğruluk oranları yüksektir.

Kullanılan Araçlar

Araç

Amaç

Postman

İşlevsellik ve güvenlik testleri

Burp Suite

Dinamik analiz ve fuzzing

Zaproxy

Otomatik güvenlik taramaları

Wfuzz / Ffuf

Brute force, endpoint keşfi

JWT Tool

Token zafiyeti testleri

Amass

Subdomain keşfi (pasif tarama)

Yapılan literatür taraması sonucunda erişilen bazı otomatik API test araçları

Otomasyon Teknikleri

  1. JSON Yanıt Karşılaştırması: Otomatik testler, beklenen JSON yapılarını gerçek API yanıtları ile karşılaştırır. Alanlar eksikse, bozuksa veya değer uyuşmuyorsa hata döner.
  2. Paralel ve Sıralı Çağrı Yönetimi: Sıralı çalışması gereken API çağrıları tespit edilerek sıralı, bağımsızlar ise paralel yürütülür. Bu işlem Bankacı algoritması ile deadlock önlenerek yapılır.
  3. Regex Tabanlı Esneklik: Her testte alan değeri bilinmeyebilir (örneğin, benzersiz token). Bu durumda alanı tamamen yoksay, sadece varlığını kontrol et veya regex ile doğrula seçenekleri sunulur.
  4. Test Süit Planlama: AWS gibi ortamlarda zamanlanabilir testler uzaktan yürütülebilir, sonuçlar mail ile gönderilir.

Manuel ve Otomatik Testin Karşılaştırılması

Özellik

Manuel Test

Otomatik Test

Hız

Yavaş

Hızlı

Hata Riski

Yüksek

Düşük

Yinelenebilirlik

Zor

Kolay

Veri Karşılaştırması

Gözle/elle

JSON karşılaştırma otomatik yapılır

Maliyet

İnsan gücüne bağlı


İlk kurulum maliyetli, sonrasında ekonomik

Kapsam

Sınırlı senaryo

Yüzlerce senaryo eş zamanlı test edilebilir

Gerçek Zamanlı Tespit

Nadiren

Anlık bildirim ve otomatik raporlama mümkün

Otomatik testin getirdiği avantajlar, büyük ölçekli sistemler için neredeyse zorunlu hâle gelmiştir.

Güvenlik Testi Yaklaşımları: Dinamik, Statik ve Fuzzing

Statik Analiz (SAST - Static Application Security Testing)

  • Kaynak kod incelenerek potansiyel zafiyetler belirlenir
  • Avantaj: Kod erişimi varsa erken aşamada tespit sağlar
  • Dezavantaj: Gerçek zamanlı davranışı göremez

Dinamik Analiz (DAST - Dynamic Application Security Testing)

  • Çalışır hâlde API'ye saldırılar yapılır
  • Burp Suite, Zaproxy gibi araçlarla gerçekleştirilir
  • Avantaj: Gerçek zafiyetler görünür
  • Dezavantaj: Kod erişimi gerekmez ama bazı sorunlar gözden kaçabilir.
[Tarayıcı] → [Zaproxy] → [API Sunucusu]
                 ↖ VULNERABILITY REPORT ↗

Fuzzing (Bozuk Veri Testi)

  • Girdi alanlarına bozuk/veri türü dışı içerikler gönderilerek sistemin dayanıklılığı test edilir
  • Hedef: Sistemi çökertmek veya kontrol dışı sonuçlar almak
  • Örnek: Sayı beklenen yere SQL sorgusu göndermek

Örnek Test Türleri ve Senaryolar

Kaynaklarda önerilen temel güvenlik test senaryoları:

Test Türü

Açıklama

Kimlik Doğrulama

Token zayıflığı, brute-force, 2FA testleri

Yetkilendirme

Kullanıcının başkasına ait kaynağa erişim testi

Girdi Doğrulama

XSS, SQL Injection gibi saldırı vektörleriyle test

Yanıt Formatı Doğrulama

JSON alanları eksik mi, fazlalık var mı

Yanlış Girdi Senaryoları

NULL, uzun string, özel karakter, veri türü uyumsuzluğu

Rate Limiting Testi

Bir API'ye saniyede 1000 istek atılması durumunda ne olur

Oturum Testi

Session fixation, token reuse gibi senaryolar

3. Parti Bağımlılıklar

Dış API’ler üzerinden veri sızma testi

Raporlama ve Geliştirici Geri Bildirimi

Otomatik test araçları, hata durumlarını test raporuna yazılı olarak döker. Geliştirici bu rapora bakarak hangi testlerin neden başarısız olduğunu görebilir. Örneğin:

[TEST: POST /create-user]
Expected: "status":"success"
Received: "status":"error", "msg":"missing field 'email'"
→ Reason: Request body missing required parameter

Raporlar .pdf ve .doc formatında üretilebilir. Ayrıca e-posta ile gönderim mümkündür.

API Güvenlik Açıkları ve Saldırı Vektörleri

API’ler, dış dünyaya açık giriş noktaları olmaları nedeniyle siber saldırıların hedefi hâline gelir. Bu nedenle yaygın güvenlik açıklarının tanımlanması ve sistematik olarak test edilmesi büyük önem taşır. Özellikle RESTful API mimarisinde, yetkilendirme hataları, veri sızıntıları ve girdi kontrollerindeki eksiklikler kritik zafiyetlere yol açabilir.

OWASP API Security Top 10 (2023)

OWASP (Open Web Application Security Project), API'ler için en yaygın ve tehlikeli 10 güvenlik zafiyetini aşağıdaki gibi sıralanır:


  1. Broken Object Level Authorization
  2. Broken Authentication
  3. Broken Object Property Level Authorization
  4. Unrestricted Resource Consumption
  5. Broken Function Level Authorization
  6. Unrestricted Access to Sensitive Business Flows
  7. SSRF
  8. Security Misconfiguration
  9. Improper Inventory Management
  10. Unsafe Consumption of APIs


Broken Object Level Authorization (BOLA): Kullanıcı kimliği doğrulansa da, başkasına ait verilere erişebiliyorsa bu açıklık mevcuttur.

  • Örnek: GET /user/12345/profile çağrısı ile başka bir kullanıcının verilerine ulaşılması.


Broken Authentication: Token süresi uzunsa, tahmin edilebilir JWT payload varsa veya oturum süresi sınırsızsa risklidir.

  • Örnek: Zayıf şifreli JWT → {alg: "none"} → imzasız JWT ile sahte kimlik.


Security Misconfiguration: Hatalı header ayarları, açık bırakılan portlar, debug modları, izin verilmeyen CORS.

  • Örnek: OPTIONS * isteğine izin verilmesi.


Mass Assignment: Kullanıcının göndermemesi gereken alanları JSON içinde gönderebilmesi.

  • Örnek: {"username":"user1", "isAdmin":true} → kullanıcı kendini admin yapar.

Özel Saldırı Vektörleri

  • Brute Force Login Denemeleri: Zayıf parola koruması, captcha eksikliği varsa, token çalınabilir
  • Token Manipülasyonu: JWT içeriği değiştirilerek yetkisiz erişim denenebilir
  • Insecure Direct Object References (IDOR): Otomatikleştirilmiş ID tahmini ile veri sızdırılabilir (/invoice/000001 ➝ /000002)
  • Cross-Site Scripting (XSS): Girdi alanlarına <script> gibi zararlı kod eklenmesi
  • Server-Side Request Forgery (SSRF): API içinden başka bir sunucuya istek göndermek için kandırma

Açıkların Erken Tespiti ve Yazılım Yaşam Döngüsüne (SDLC) Entegrasyonu

API güvenlik açıkları yazılım geliştirme yaşam döngüsüne (SDLC) entegre şekilde test edilmelidir:

  • Kod yazım aşamasında SAST uygulanmalı
  • CI/CD süreçlerine DAST ve Fuzzing otomatik eklenmeli
  • Test sonuçları geliştiriciye anlık bildirilmelidir


API Güvenlik Testinin SDLC’ye Entegrasyonu aşağıdaki gibidir:

[Yazılım Geliştirme] → [Kod İncelemesi] → [Otomatik API Test] → [Güvenlik Testi (CI/CD)] → [Raporlama]

RESTful API Testinde Karşılaşılan Zorluklar

RESTful API'lerin yazılım sistemlerindeki merkezi rolü, bu yapıların güvenlik testine duyulan ihtiyacı artırmıştır. Ancak API güvenlik testi yalnızca araçlarla gerçekleştirilen teknik bir süreç değil; aynı zamanda metodolojik, operasyonel ve organizasyonel düzeyde bazı zorlukları da beraberinde getirir. Bu zorluklar, geliştiricilerin bilgi eksikliklerinden, test araçlarının sınırlamalarına, karmaşık API yapılarından yetersiz dökümantasyona kadar geniş bir yelpazeye yayılır.

Teknik Zorluklar

Karmaşık API Topolojisi ve Bağımlılıklar

Modern mikroservis mimarilerinde bir API’nin başka birçok servise bağlı olması, testlerin kapsamını genişletir. Girdi/çıktı bağımlılıkları nedeniyle:

  • Bir API çağrısının sonucu, başka bir API'nin parametresi olabilir.
  • Paralel çağrılar yerine sıralı test gerekebilir.
  • Bu durum doğru test sıralaması oluşturmayı zorlaştırır.


API Bağımlılık Zinciri:

POST /auth/login → GET /user/profile → POST /user/update → GET /user/audit-log

Dinamik Yanıtlar ve Rastgele Veriler

Bazı API yanıtlarında her çağrıda değişen veriler (örneğin zaman damgası, UUID) bulunur. Bu durum:

  • Beklenen-yanıt karşılaştırmasını zorlaştırır.
  • Sabit eşleştirme yapılamadığında regex/alan yoksayma gibi esnek test mantıkları gerektirir.

API'nin Belirsiz veya Eksik Dökümantasyonu

Test senaryolarının oluşturulabilmesi için API endpoint’lerinin, veri tiplerinin ve hata kodlarının net biçimde dökümante edilmesi gerekir. Ancak:

  • API dökümantasyonu eksik olabilir
  • OpenAPI/Swagger tanımları güncel olmayabilir
  • Yanıt şemaları eksik veya yanıltıcı olabilir.

Organizasyonel Zorluklar

Güvenlik Testinin Yazılım Döngüsüne Entegre Edilmemesi

Birçok yazılım projesinde güvenlik testleri geliştirme sürecinin dışında, sonradan eklenen bir faz olarak görülmektedir. Bu durum:

  • Güvenlik açıklarının üretim aşamasında tespit edilmesini zorlaştırır.
  • Test sonuçlarının yazılım koduna entegre edilmesini engeller.

Geliştirici Yetkinliklerinin Sınırlı Olması

Geliştiricilerin veya QA ekiplerinin API güvenliği konusunda yeterince eğitimli olmaması, açıkların gözden kaçmasına neden olur. Özellikle OWASP Top 10 gibi standartlara yeterince hâkim olunmaması, kritik güvenlik testlerinin atlanmasına yol açar.

Rol ve Sorumluluk Belirsizlikleri

Büyük organizasyonlarda API geliştirme, test etme, sürüm yönetimi gibi görevlerin farklı takımlarda olması aşağıdaki sorunlara neden olabilir:

  • Sorumluluk çakışmaları
  • Geri bildirim gecikmeleri
  • Güvenlik açıklarının kapatılmasında iletişim eksikliği

Araç ve Otomasyon Sınırlamaları

Mevcut Test Araçlarının Sınırlı Esnekliği

Birçok API test aracı:

  • JSON’daki değişken alanları esnek eşleştiremez
  • Sıralı API çağrılarını yönetemez
  • Dinamik token üretimini desteklemez

Bu nedenle, özel script’ler ve ek entegrasyonlar gerekebilir.

Otomatik Test Ortamlarının Kurulum Zorlukları

Özellikle CI/CD sistemlerine entegre test ortamlarının kurulumu:

  • Ek altyapı ihtiyacı doğurur (örn. Docker, Jenkins, AWS)
  • Ansible/Jinja gibi araçlara hâkimiyet gerektirir
  • Yanlış yapılandırmalarda test sonuçları yanıltıcı olabilir.

Kaynakça

Alharbi, Sattam J., and Tarek Moulahi. "API Security Testing: The Challenges of Security Testing for Restful APIs." International Journal of Innovative Science and Research Technology 8, no. 5 (2023): 1485–1499. Erişim Adresi.

Asemi, Hadi. A Study on API Security Pentesting. Master's thesis, California Polytechnic State University, 2023. Erişim Adresi.

Golmohammadi, Amir, Min Zhang, and Andrea Arcuri. "Testing Restful APIs: A Survey." ACM Transactions on Software Engineering and Methodology 33, no. 1 (2023): 1–41. Erişim Adresi.

Helenius, Markus, and Matti Vallius. REST API Security: Testing and Analysis. Bachelor's thesis, Metropolia University of Applied Sciences, 2022. Erişim Adresi.

Marxer, Marc Luca. API Security Testing. Doctoral dissertation, OST Ostschweizer Fachhochschule, 2021. Erişim Adresi.

Sharma, A., and M. Revathi. "Automated API Testing." In 2018 3rd International Conference on Inventive Computation Technologies (ICICT), 788–791. IEEE, 2018. Erişim Adresi.

Sen de Değerlendir!

0 Değerlendirme

Yazar Bilgileri

Avatar
Ana YazarBeyza Nur Türkü15 Mayıs 2025 17:10
KÜRE'ye Sor