GraphQL güvenliği
GraphQL şemasını ve çözücülerini inceler; yetkilendirme eksikliği, toplu sorgu ve derin sorgu kaynaklı açıkları tanır, sorgu sınırları ve kalıcı sorgularla API’yi sertleştirirsin.
Seviye 301 · 16 ders · 14 pratik lab
Dersler
GraphQL’i tanımak
- GraphQL temelleri: şema, sorgu, değişiklik ve abonelik
- İçgözlem: şema herkese açık olmalı mı
- GraphQL isteklerini Burp ve GraphQL istemcileriyle incelemek
- Kısa görev: lab GraphQL şemasını çıkar ve hassas alanları işaretle
Açıklar
- Çözücü düzeyinde yetkilendirme eksikliği
- Toplu sorgu ve takma adlarla deneme sınırlarını aşmak
- Derin ve döngüsel sorgularla hizmet kesintisi
- GraphQL argümanlarında enjeksiyon
- GraphQL’de CSRF: GET ve form içerik türleri
- Hata mesajlarında ve önerilerde şema sızıntısı
- Kısa görev: dört GraphQL açığını kanıtla
Savunma
- Derinlik, karmaşıklık ve maliyet sınırları
- Kalıcı sorgular ve izin listesi
- Yetkilendirmeyi iş mantığı katmanına taşımak
- GraphQL işlemlerini anlamlı biçimde günlüğe yazmak
- Bitirme görevi: bir GraphQL API’sini sertleştir ve yeniden test et
Pratik lablar
- İçgözlemle şemayı çıkar: Lab GraphQL API'sinin şemasını içgözlemle çıkar ve kişisel veri taşıyan alanları işaretle.
- Yayında içgözlemi kapat: İçgözlemin yayında açık olduğunu göster, kapat ve geliştirme ortamında açık kalmasını sağla.
- Öneri mesajlarından şema sızıntısı: İçgözlem kapalıyken hata önerilerinin alan adlarını sızdırdığını göster ve önerileri kapat.
- Şemadan saldırı yüzeyi haritası: Şemadaki sorgu ve değişiklikleri yetki gereksinimine göre sınıflandır ve korumasız olanları test edip düzelt.
- Çözücüde eksik yetki kontrolü: İç içe user alanı üzerinden başka kullanıcının e-postasına ulaşıldığını kanıtla ve çözücüye yetki kontrolü ekle.
- Takma adlarla aşılan deneme sınırı: Tek istekte takma adlarla onlarca giriş denemesi yapılabildiğini kanıtla ve sınırı işlem başına uygula.
- GET ile çalışan değişiklik: GraphQL'de CSRF: Değişikliklerin GET ve form içerik türüyle kabul edildiğini göster ve yalnızca JSON POST'a izin ver.
- Derin sorguyla tükenen servis: Döngüsel ilişkilerle kurulan derin sorgunun yanıt süresini lab'da ölç ve derinlik sınırı ekle.
- Argümanda enjeksiyon: Arama argümanının veritabanı sorgusuna karıştığını kanıtla ve çözücüde parametreli sorguya geç.
- GraphQL işlemlerini anlamlı günlüğe yaz: Tüm isteklerin tek yola düştüğü günlükte işlem adı, türü ve kullanıcıyı kaydedecek şekilde günlük kaydını düzelt.
- Maliyet sınırı tanımla: Alanlara maliyet puanı ver, sorgu başına üst sınır koy ve pahalı sorgunun reddedildiğini göster.
- Kalıcı sorgularla izin listesi: İstemcinin kullandığı sorguları kalıcı sorgu olarak kaydet ve listede olmayan sorguların reddedildiğini kanıtla.
- Yetkilendirmeyi iş mantığı katmanına taşı: Çözücülere dağılmış kontrolleri iş mantığı katmanına taşı ve aynı veriye farklı yollardan erişimin de korunduğunu test et.
- GraphQL API'sini sertleştir: Tarnova Rapor: Kurgusal Tarnova Rapor API'sinde içgözlem, yetki ve maliyet sorunlarını kapat ve yeniden test et.
Kurs hakkında
GraphQL şemasını ve çözücülerini inceler; yetkilendirme eksikliği, toplu sorgu ve derin sorgu kaynaklı açıkları tanır, sorgu sınırları ve kalıcı sorgularla API’yi sertleştirirsin.
Ne öğreneceksin
- GraphQL’i tanımak
- Açıklar
- Savunma
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux masaüstünde geçer; araçlar pencereli arayüzleriyle hazırdır. Kurulum gerekmez, bilgisayar ekranı önerilir.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.