23 Ocak 2026 Cuma

Firebase Rules ile Güvenlik (Firestore & Realtime Database)

Firebase kullanırken yapılan en kritik hata, veritabanını açık bırakmaktır. Uygulama ne kadar iyi olursa olsun, Rules (Güvenlik Kuralları) yoksa veri herkes için savunmasızdır.

Bu yazıda, Firebase Security Rules mantığını sade bir dille anlatıyor; özellikle Firestore ve Quiz / Login senaryoları üzerinden gerçek kurallarla örnekliyorum.


Firebase Rules Nedir?

Firebase Rules; kim, ne zaman, hangi veriye erişebilir? sorularını yanıtlayan güvenlik katmanıdır.

Rules sayesinde:

  • Yetkisiz erişim engellenir

  • Kullanıcıya özel veri korunur

  • Okuma / yazma kontrol altına alınır


⚠️ En Tehlikeli Ayar (Test Mode)

allow read, write: if true;

Bu kural:

  • Herkese tam yetki verir

  • Canlı uygulamalarda KESİNLİKLE kullanılmamalıdır

Test bittikten sonra mutlaka kapatılmalıdır.


1️⃣ Authentication Zorunluluğu

İlk ve temel kural:

allow read, write: if request.auth != null;

Bu sayede:

  • Giriş yapmayan kullanıcı veri okuyamaz

  • Bot ve anonim erişimler engellenir


2️⃣ Kullanıcıya Özel Veri Koruma

users koleksiyonu için kural:

match /users/{userId} {
  allow read, write: if request.auth.uid == userId;
}

Bu kural sayesinde:

  • Her kullanıcı sadece kendi verisini görür

  • Başkasının verisine erişemez


3️⃣ Quiz Uygulaması İçin Örnek Rules

Quiz soruları herkese açık olabilir:

match /quizzes/{quizId} {
  allow read: if true;
  allow write: if false;
}

Sorular alt koleksiyonu:

match /quizzes/{quizId}/questions/{questionId} {
  allow read: if true;
  allow write: if false;
}

Kullanıcılar soruları okuyabilir ama değiştiremez.


4️⃣ Skor Kaydetme (Kullanıcı Bazlı)

match /scores/{userId} {
  allow read, write: if request.auth.uid == userId;
}

Bu yapı:

  • Kullanıcı kendi skorunu kaydeder

  • Başkasının skorunu manipüle edemez


5️⃣ Sadece Admin Yazabilsin

allow write: if request.auth.token.admin == true;

Admin yetkisi:

  • Firebase Custom Claims ile verilir

  • Panelden manuel verilmez

Bu yöntemle:

  • Quiz soruları sadece admin ekler

  • Kullanıcı veri bütünlüğü korunur


6️⃣ Veri Doğrulama (Validation)

allow write: if request.resource.data.score is int
             && request.resource.data.score >= 0
             && request.resource.data.score <= 100;

Rules sadece erişimi değil, verinin şeklini de kontrol eder.


7️⃣ Realtime Database İçin Kısa Örnek

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Mantık aynı, sözdizimi farklıdır.


8️⃣ Sık Yapılan Hatalar

  • ❌ Rules yazmadan yayına çıkmak

  • ❌ Tüm koleksiyonu public yapmak

  • ❌ Client tarafında güvenliğe güvenmek

  • ❌ Validation kullanmamak

Güvenlik client tarafında değil, Firebase Rules tarafında sağlanır.


ZaTH Developer Güvenlik Tavsiyesi 🔐

Eğer bir kullanıcı istemediğin bir şeyi yapabiliyorsa, hata senin Rules’undadır.

Basit başla, sonra sıkılaştır:

  • Önce auth kontrolü

  • Sonra kullanıcı bazlı erişim

  • En son validation ve admin yetkileri


Sonuç

Firebase Rules:

  • Görünmez ama hayati bir katmandır

  • Doğru yazıldığında uygulamanı korur

  • Yanlış yazıldığında tüm sistemi riske atar

ZaTH Developer olarak; güvenli, sürdürülebilir ve profesyonel uygulamalar geliştirmeyi önemsiyorum. Bir sonraki yazıda Firebase Rules’u gerçek bir quiz projesi üzerinden daha da detaylandırabiliriz 🚀



Hiç yorum yok:

Yorum Gönder

  Firebase + AdMob Entegrasyonu (Android Uygulamalar İçin) Mobil uygulama geliştiren herkesin aklındaki sorulardan biri şudur: Bu uygulamada...