🔐 Muzibu API Güvenlik Planı

📅 Tarih: 2025-11-26 | 🎯 Tenant: muzibu.com (Tenant 1001) | ⚠️ Kritik Öncelik: Faz 1 Güvenlik Altyapısı

🚨 KRİTİK GÜVENLİK AÇIĞI TESPİT EDİLDİ!

Durum: "/api/muzibu/songs/{id}/stream" endpoint'i tamamen açık!

Risk: 26,000 şarkı herkes tarafından erişilebilir durumda.

Sonuç: Sistem üretime hazır değil - Faz 1 güvenlik uygulamaları zorunlu!

📊 Mevcut Güvenlik Durumu

Güvenlik Katmanı Durum Risk Seviyesi Etki
Rate Limiting
(Hız sınırlama)
❌ YOK KRİTİK DDoS saldırısına açık, sunucu yükü kontrolsüz
Bearer Token Auth
(Kimlik doğrulama)
❌ YOK KRİTİK Herkes API'ye erişebilir, üye olmadan dinleme
Subscription Check
(Abonelik kontrolü)
❌ YOK KRİTİK Ücretli içerik ücretsiz erişilebilir, gelir kaybı
Signed URL
(İmzalı linkler)
❌ YOK YÜKSEK Link paylaşımı ile tüm kütüphane çalınabilir
HLS + AES-128 Encryption
(Stream şifrelemesi)
❌ YOK YÜKSEK Stream dosyaları indirilebilir, telif riski
Device Fingerprint
(Cihaz sınırı)
❌ YOK ORTA Sınırsız cihazdan hesap paylaşımı

💥 Risk Analizi ve İş Etkisi

💰 Gelir Kaybı

Premium abonelik sistemi işlemez. Kullanıcılar ödeme yapmadan tüm içeriğe erişebilir.

⚖️ Telif Hakkı Riski

26,000 şarkının korunmasız paylaşımı ciddi telif hakkı ihlali ve yasal sorunlara yol açabilir.

🎯 Marka İtibarı

Güvenlik açığı keşfedilirse profesyonel imaj zarar görür, kurumsal müşteri kaybı.

🔥 Sunucu Yükü

Rate limit olmadan botlar sunucuyu çökertebilir. Bant genişliği maliyeti kontrolsüz artabilir.

🎯 Faz 1: Temel Güvenlik Altyapısı

İlk üç katman HEMEN uygulanmalı - bunlar olmadan sistem canlıya çıkmamalı!

1. Rate Limiting Sistemi Kritik

📋 Ne Yapacak?

Her kullanıcı ve IP adresi için dakika/saat bazında istek sınırı koyacağız. Bot saldırıları ve aşırı kullanımı engelleyeceğiz.

  • IP Bazlı: Misafir kullanıcılar için (dakikada 10 istek)
  • User Bazlı: Giriş yapmış kullanıcılar için (dakikada 60 istek)
  • Premium Bazlı: Premium üyeler için (dakikada 120 istek)

🔧 Nasıl Uygulayacağız?

Laravel'in Throttle Middleware (hız sınırlama ara yazılımı) kullanacağız.

  • Middleware oluşturacağız: RateLimitMiddleware
  • Redis ile istek sayılarını takip edeceğiz
  • Aşım durumunda 429 (Too Many Requests) hatası döneceğiz
  • Header'larda kalan limit bilgisi göstereceğiz

✅ Beklenen Sonuç

Bot saldırıları engellenecek, sunucu yükü kontrol altında olacak. Normal kullanıcılar etkilenmeyecek, sadece aşırı kullanım sınırlanacak.

2. Bearer Token Authentication Kritik

📋 Ne Yapacak?

Stream endpoint'lerine erişim için geçerli bir Bearer Token (kimlik doğrulama anahtarı) zorunlu hale getireceğiz. Giriş yapmayan kullanıcılar müzik dinleyemeyecek.

🔧 Nasıl Uygulayacağız?

  • Laravel Sanctum token sistemi kullanacağız
  • Giriş yapınca token üretilecek (30 gün geçerli)
  • Her stream isteğinde Authorization: Bearer {token} header'ı kontrol edilecek
  • Geçersiz/eksik token → 401 Unauthorized hatası dönecek
  • Token yenileme mekanizması ekleyeceğiz

✅ Beklenen Sonuç

Sadece kayıtlı ve giriş yapmış kullanıcılar müzik dinleyebilecek. Anonim erişim tamamen engellenecek.

3. Subscription Kontrolü Kritik

📋 Ne Yapacak?

Her stream isteğinde kullanıcının aktif premium aboneliği olup olmadığını kontrol edeceğiz. Free kullanıcılar sadece 30 saniye önizleme dinleyebilecek.

🔧 Nasıl Uygulayacağız?

  • Subscription model kontrolü ekleyeceğiz
  • Premium kontrolü: user->hasActiveSubscription() metodu
  • Free kullanıcılar için 30 saniyelik preview stream döneceğiz
  • Premium olmayan kullanıcıya "Upgrade" mesajı göstereceğiz
  • Abonelik bitişi yaklaştığında uyarı sistemi

✅ Beklenen Sonuç

İş modeli çalışacak - sadece ödeme yapan kullanıcılar tam içeriğe erişebilecek. Free trial deneyimi ile dönüşüm oranı artacak.

🎯 Faz 2: Gelişmiş Güvenlik Katmanları

Temel güvenlik tamamlandıktan sonra bu katmanlar eklenecek.

4. Signed URL Sistemi Yüksek Öncelik

📋 Ne Yapacak?

Stream URL'leri imzalı ve geçici olacak. Link paylaşımı yapılsa bile 5 dakika sonra geçersiz hale gelecek.

🔧 Nasıl Uygulayacağız?

  • Laravel'in URL::signedRoute() metodunu kullanacağız
  • Her stream isteği için 5 dakika geçerli imzalı URL üretilecek
  • URL'de timestamp ve hash olacak
  • İmza doğrulama middleware'i ekleyeceğiz
  • Süre dolmuş/geçersiz imza → 403 Forbidden

✅ Beklenen Sonuç

Link paylaşımı anlamsız hale gelecek. Her kullanıcı kendi token'ı ile kendi link'ini kullanacak.

5. HLS + AES-128 Şifreleme Yüksek Öncelik

📋 Ne Yapacak?

Stream dosyaları AES-128 algoritması ile şifrelenecek. Direkt dosya indirme imkansız hale gelecek, sadece player aracılığıyla dinlenebilecek.

🔧 Nasıl Uygulayacağız?

  • FFmpeg ile HLS segmentlerini AES-128 ile şifreleyeceğiz
  • Her şarkı için unique encryption key üretilecek
  • Key dosyası ayrı endpoint'te döndürülecek (yine korumalı)
  • M3U8 playlist dosyasına key bilgisi eklenecek
  • HLS.js player otomatik olarak şifreyi çözecek

✅ Beklenen Sonuç

Stream dosyaları şifreli olacak. Dosyayı indirsen bile oynatılamayacak. Telif hakkı koruması maksimum seviyede olacak.

6. Device Fingerprinting Orta Öncelik

📋 Ne Yapacak?

Her kullanıcı maksimum 3 cihazda oturum açabilecek. Hesap paylaşımı engellenecek (Netflix/Spotify mantığı).

🔧 Nasıl Uygulayacağız?

  • Browser fingerprint kütüphanesi kullanacağız (FingerprintJS)
  • Her cihaz için unique ID oluşturulacak
  • Database'de user_devices tablosu tutacağız
  • 3 cihaz sınırı aşılırsa eski cihaz logout olacak
  • Kullanıcı isterse cihazları yönetebilecek (ayarlar sayfası)

✅ Beklenen Sonuç

Hesap paylaşımı minimuma inecek. Kurumsal paketlerde cihaz sayısı artırılabilecek (ek ücret).

⏱️ Uygulama Zaman Çizelgesi

Gün 1: Rate Limiting

Middleware oluşturma, Redis entegrasyonu, test

Gün 1-2: Bearer Token Auth

Sanctum kurulumu, token middleware, frontend entegrasyonu

Gün 2: Subscription Check

Subscription model kontrolü, preview sistemi, test

Gün 3: Faz 1 Test & Deploy

Kapsamlı test, güvenlik testi, canlıya alma

Gün 4-5: Signed URL

URL imzalama, doğrulama, frontend güncelleme

Gün 6-8: HLS Şifreleme

FFmpeg pipeline, key yönetimi, player güncellemesi

Gün 9-10: Device Fingerprint

FingerprintJS entegrasyonu, cihaz yönetimi UI

📋 Dosya Yapısı ve Etkilenecek Bileşenler

Yeni Oluşturulacak Dosyalar

  • app/Http/Middleware/RateLimitMiddleware.php - Hız sınırlama
  • app/Http/Middleware/VerifySubscription.php - Abonelik kontrolü
  • app/Http/Middleware/VerifySignedUrl.php - URL imza doğrulama
  • app/Services/StreamEncryptionService.php - HLS şifreleme servisi
  • app/Services/DeviceFingerprintService.php - Cihaz yönetimi
  • database/migrations/..._create_user_devices_table.php - Cihaz tablosu
  • database/migrations/..._add_rate_limit_cache.php - Rate limit cache

Güncellenecek Dosyalar

  • Modules/Muzibu/routes/api.php - Middleware eklemeleri
  • Modules/Muzibu/app/Http/Controllers/Api/StreamController.php - Güvenlik kontrolleri
  • Modules/Muzibu/app/Services/StreamService.php - Stream URL üretimi
  • resources/views/themes/muzibu/components/player.blade.php - Token gönderimi
  • config/sanctum.php - Token yapılandırması

✅ Bu Planı Uyguladıktan Sonra

Sistem üretime hazır hale gelecek: