⚡ÖZET VE TEKNİK CEVAP
GraphQL kalıcı sorgular ve derinlik sınırlandırma, istemci sorgularını önceden onaylanmış şifreleme özetleriyle (hash) sınırlandırıp aşırı iç içe geçmiş sorguları reddederek üretim API'lerini DoS saldırılarından ve veritabanı kilitlenmelerinden korur.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Üretim ortamında GraphQL güvenliği çok katmanlı bir savunma gerektirir:
- ▸
Sorgu Derinlik Sınırı: Sorgu çalıştırılmadan önce Soyut Sözdizimi Ağacı (AST) taranır ve azami derinlik hesaplanır. Belirlenen sınırı (örn. derinlik > 6) aşan istekler tek bir veritabanı satırı dahi okunmadan HTTP 400 ile reddedilir.
- ▸
Sorgu Karmaşıklık ve Maliyet Analizi: Şemadaki her alana karmaşıklık puanı atanır (skaler = 1, sayfalı liste =
1 * limit). Toplam puan bütçeyi (örn. azami maliyet 1000) aşarsa istek iptal edilir. - ▸
Kalıcı Sorgu İzin Listesi (Safe Mode): Canlı ortamda GraphQL sunucusu 'yalnızca izin verilenler' moduna alınır. Dinamik metin sorguları tamamen engellenir; sunucu hafızasında veya Redis'te karşılığı olmayan
sha256Hashistekleri doğrudan kenarda düşürülür.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaKısıtlanmamış canlı GraphQL uç noktalarının temel güvenlik açığı nedir?
Kalıcı Sorgular (Persisted Queries), GraphQL POST isteklerini nasıl önbelleklenebilir HTTP GET isteklerine dönüştürür?
GraphQL Kalıcı Sorgular ve Derinlik Sınırlandırma — Sıkça Sorulan Sorular
Bir saldırgan 20 seviye iç içe geçmiş alan (`user { friends { friends { ... } } }`) içeren bir istek gönderiyor. Hangi mekanizma veritabanı tek bir SQL çalıştırmadan önce bu isteği engeller?
AST Sorgu Derinlik Sınırlandırması (Query Depth Limiting). AST Sorgu Derinlik Sınırı, sorgu ağacını analiz ederek izin verilen derinliği aşan istekleri resolver katmanına girmeden anında reddeder.
Genel canlı ortamlarda GraphQL introspection (`__schema` / `__type`) özelliğini kapatmak neden standart bir en iyi uygulamadır?
Kötü niyetli kişilerin tüm veri modelinizi, iç alan adlarını ve kullanım dışı uç noktaları otomatik olarak haritalandırmasını önlemek için. Introspection API şemanızın tüm planını dışarı açar. Canlıda kapatılması saldırganların belgelenmemiş alanları ve iç servis yapılarını keşfetmesini zorlaştırır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
GraphQL kalıcı sorgular ve derinlik sınırlandırma, istemci sorgularını önceden onaylanmış şifreleme özetleriyle (hash) sınırlandırıp aşırı iç içe geçmiş sorguları reddederek üretim API'lerini DoS saldırılarından ve veritabanı kilitlenmelerinden korur.
- ▸
Kalıcı Sorgular (Persisted Queries), GraphQL sorgu metinlerinin istemci derleme aşamasında SHA-256 ile özetlenip API Gateway üzerinde bir izin listesine kaydedildiği ve istemcinin çalışma zamanında yalnızca bu özeti (hash) gönderdiği bir güvenlik ve performans desenidir.
Yaygın Yanılgılar
- ✗
Derinlik sınırı veya karmaşıklık analizi olmadan ham GraphQL uç noktasını canlıya almak.
Karar Kılavuzu & Önceliklendirme
Kalıcı sorgular ve derinlik analizi olmadığında, açık bir GraphQL uç noktası veritabanından sınırsız veri çekme proxy'sine dönüşür; saldırganlar 2 KB'lık tek bir istekle sunucu CPU'sunu tüketebilir.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]GraphQL Persisted Queries & Query Depth Limiting Specification— TinyCTO Architectural Standards
