🔒 Güvenlik Analizi

Muzibu MP3 İndirme Sorunu

7 Ocak 2026 - API Güvenlik Açığı Raporu

📝 Basit Anlatım (Herkes İçin)

Sorun: Kullanıcılar tarayıcının geliştirici araçlarını (DevTools) açarak şarkı dosyalarının tam adresini görebiliyor ve indirebiliyor.

Neden: API yanıtlarında şarkının gerçek dosya yolu (file_path) paylaşılıyor.

Çözüm: API yanıtlarından dosya yolunu kaldırmak. Player zaten güvenli bir yol kullanıyor.

Risk: Site bozulmaz çünkü player bu bilgiyi kullanmıyor.

🔧 Teknik Detaylar (Geliştiriciler İçin)

Problem:

// API Yanıtı (DevTools'ta görünen)
{
  "song_id": 320,
  "song_title": "All Night Long",
  "file_path": "song_6932528a3eee5.mp3", ← SORUN!
  "hls_path": "muzibu/hls/320/playlist.m3u8"
}

Mevcut Güvenlik Mekanizmaları:

file_path Bulunan API Controller'lar (13 yer):

Modules/Muzibu/app/Http/Controllers/Api/
  • ├── PlaylistController.php:99
  • ├── AlbumController.php:80
  • ├── SongController.php:63, 109, 317, 495
  • ├── ArtistController.php:110, 204
  • ├── RadioController.php:54
  • ├── SectorController.php:80
  • ├── GenreController.php:49
  • └── QueueRefillController.php:862, 1174

📊 Etki Analizi

Bileşen file_path Kullanıyor? Kaldırınca Etkilenir?
Frontend Player (player-core.js) ❌ Hayır ❌ Etkilenmez
Frontend API Yanıtları ✅ Evet ✅ Kaldırılmalı
Admin Panel Blade ✅ Evet (PHP) ❌ Etkilenmez
Admin Mini Player ⚠️ Fallback ❌ Etkilenmez

✅ Neden Site Bozulmaz?

Frontend Player

Her şarkı çalınmadan önce /api/muzibu/songs/{id}/stream endpoint'i çağrılıyor. Bu endpoint signed URL döndürüyor. file_path hiç kullanılmıyor.

Admin Panel

Admin blade'ler $song->file_path'i PHP model'den alıyor, API'den değil. Bu yüzden API'den kaldırmak admin'i etkilemez.

Admin Mini Player

Öncelik song_id ile HLS. file_path sadece HLS başarısız olursa fallback. Blade'den PHP ile gönderiliyor.

Mevcut Güvenlik

HLS şifreleme + Signed URL zaten aktif. Sadece API yanıtından ham dosya yolunu kaldırmak yeterli.

🎯 Çözüm Planı

1

API Controller'lardan file_path Kaldır

13 yerden 'file_path' => $song->file_path, satırını kaldır

2

Cache Temizle

Redis cache temizle (MuzibuCacheService)

3

Test Et

Frontend player, admin mini player, playlist/albüm sayfaları test et

🔄 Alternatif/Ek Önlemler

⚠️

Nginx X-Accel-Redirect: MP3 dosyalarına direkt erişimi engelleyip sadece Laravel üzerinden serve et

⚠️

Referer Kontrolü: Sadece muzibu.com'den gelen isteklere izin ver

⚠️

Hotlink Protection: .htaccess veya Nginx ile hotlink engelle

Önerilen: file_path kaldırmak en basit ve etkili çözüm