← Tüm yazılar

GraphQL Güvenliği: Introspection, Aşırı Sorgu ve Yetkilendirme Riskleri

4 Eylül 2026

GraphQL Güvenliği: Introspection, Aşırı Sorgu ve Yetkilendirme Riskleri

GraphQL, istemcinin tam olarak ihtiyacı olan veriyi tek bir uç noktadan sorgulamasını sağlayan esnek bir API yaklaşımıdır. Bu esneklik güçlüdür ama REST’ten farklı, kendine özgü güvenlik riskleri getirir: şema ifşası, iç içe sorgularla kaynak tüketimi ve alan düzeyinde yetkilendirme. Bu yazıda GraphQL’e özgü riskleri ve savunmalarını ele alıyoruz.

Introspection: şemanın ifşası

GraphQL, “introspection” özelliğiyle bir istemcinin API’nin tüm şemasını (tipler, alanlar, mutasyonlar) sorgulamasına izin verir. Geliştirme için kullanışlıdır, ancak üretimde açık bırakıldığında saldırgana API’nin tüm yüzeyini bir harita gibi sunar.

  • Öneri: Üretimde introspection’ı kapatın veya kimliği doğrulanmış geliştiricilerle sınırlayın. Bu, saldırganın keşfini zorlaştırır (asıl açıkların yerine geçmez ama saldırı yüzeyi haritasını gizler).

Aşırı/iç içe sorgular: kaynak tüketimi

GraphQL’in esnekliği, tek bir sorgunun çok derin veya çok geniş olabilmesi anlamına gelir. Kötü niyetli bir istemci, iç içe ilişkileri kullanarak çok maliyetli bir sorgu göndererek sunucuyu boğabilir (bir tür DoS).

  • Sorgu derinliği sınırı (depth limiting): İç içe geçme derinliğini sınırlayın.
  • Sorgu maliyeti/karmaşıklık analizi: Her alana bir maliyet atayıp toplam bütçeyi aşan sorguları reddedin.
  • Sayfalama zorunluluğu: Liste dönen alanlarda sınırsız veri çekmeyi engelleyin.
  • Hız sınırı: Uç nokta bazında hız sınırı uygulayın.

Yetkilendirme: alan düzeyinde kontrol

GraphQL’de tek uç nokta olduğu için “uç noktayı koru” yaklaşımı yetersizdir; yetkilendirme alan/tip düzeyinde yapılmalıdır. Bir kullanıcı bir tipe erişebilse bile, o tipin hassas alanlarına (ör. başka kullanıcının e-postası) erişememeli. BOLA/BFLA riskleri GraphQL’de de geçerlidir ve alan bazında kontrol gerektirir.

Hata mesajları

Ayrıntılı GraphQL hata mesajları, iç yapıyı ve şemayı sızdırabilir. Üretimde hata çıktısını sadeleştirin; iç detayları yalnız loglara yazın.

Özet

GraphQL’in esnekliği, kendine özgü riskler getirir: introspection’ı üretimde kapatın, sorgu derinliği/karmaşıklığı ve hız sınırıyla kaynak tüketimini önleyin, yetkilendirmeyi uç nokta değil alan düzeyinde uygulayın ve hata mesajlarını sadeleştirin. Bu kontroller birlikte, esnekliği güvenli hale getirir.

Kaynaklar: OWASP GraphQL Cheat Sheet, OWASP API Security Top 10.

GraphQL API’niz introspection veya aşırı sorgu risklerine açık mı? CyberTestify’ın taraması, keşfedilen API uç noktalarını değerlendirir.