Firebase Security Rules – Detaylı Rehber
🔐 Firebase Security Rules – Detaylı Rehber
Firebase Security Rules, verilerinizi korumak için en kritik güvenlik katmanıdır. Bu rehberde Firestore, Realtime Database ve Storage için kuralları adım adım öğreneceksiniz.
1. Security Rules Nedir?
Firebase servislerinde erişim kontrolünü sağlar. Kullanıcıların hangi veriye okuma/yazma yetkisi olduğunu tanımlar ve Authentication ile entegre çalışır.
2. Temel Yapı
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Bu kural, sadece giriş yapmış kullanıcıların kendi verilerini okumasına/yazmasına izin verir.
3. Anahtar Kavramlar
- request.auth: Kullanıcı kimliği
- request.resource: Yazılmak istenen yeni veri
- resource: Mevcut veri
- match: Koleksiyon/doküman yolu
- allow: İzin verilen işlemler (read, write, update, delete)
4. Firestore Security Rules Örnekleri
a) Kullanıcıya Özel Veri
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
b) Sadece Okuma İzni
match /public/{docId} {
allow read: if true;
allow write: if false;
}
c) Role-Based Access
match /admins/{docId} {
allow read, write: if request.auth.token.role == "admin";
}
5. Realtime Database Security Rules
{
"rules": {
"users": {
"$user_id": {
".read": "auth != null && auth.uid == $user_id",
".write": "auth != null && auth.uid == $user_id"
}
}
}
}
6. Cloud Storage Security Rules
service firebase.storage {
match /b/{bucket}/o {
match /userFiles/{userId}/{fileName} {
allow read, write: if request.auth.uid == userId;
}
}
}
7. En İyi Uygulamalar
- Varsayılan olarak erişimi kapat (
allow read, write: if false;) - Minimum yetki ver
- Firebase Emulator ile test et
- Zaman bazlı kurallar tanımla
- Veri doğrulama ekle
8. Emulator ile Test
firebase emulators:start --only firestore
Test senaryoları yazarak kuralların doğru çalıştığını kontrol edebilirsiniz.
9. Sık Yapılan Hatalar
allow read, write: if true;→ Tamamen açık erişim, çok tehlikeli!- Authentication olmadan veri erişimi
- Role kontrolünü sadece client tarafında yapmak

Yorumlar
Yorum Gönder