Skip to content

Security: huseyinatilgan/mail-tracker

Security

SECURITY.md

Güvenlik Dokümantasyonu

Yapılan Güvenlik İyileştirmeleri

1. Authorization (Yetkilendirme)

Campaign Policy Eklendi

  • CampaignPolicy oluşturuldu
  • view, update, delete metodları tanımlandı
  • Controller'larda manuel kontroller yerine $this->authorize() kullanılıyor

Dosyalar:

  • app/Policies/CampaignPolicy.php
  • app/Providers/AppServiceProvider.php (Policy kayıt)
  • app/Http/Controllers/CampaignController.php (Policy kullanımı)

2. Rate Limiting (Hız Sınırlama)

Tüm Endpoint'lere Rate Limiting Eklendi

  • Tracking endpoint: 100 istek/dakika
  • Auth endpoint'ler: 6 istek/dakika (Laravel Breeze default)
  • Diğer endpoint'ler: 60 istek/dakika

Dosyalar:

  • routes/web.php

3. Input Validation ve Sanitization

CampaignRequest İyileştirildi

  • Regex validation eklendi (sadece güvenli karakterler)
  • prepareForValidation() ile input sanitization
  • HTML etiketleri temizleniyor

TrackingService İyileştirildi

  • Tracking key format doğrulaması (20 karakter, alfanumerik)
  • IP adresi doğrulaması ve sanitization
  • User Agent sanitization (max 500 karakter, HTML temizleme)
  • Email validation ve sanitization

CampaignService İyileştirildi

  • Campaign name sanitization
  • Key generation güvenliği (sadece alfanumerik)
  • Max attempt kontrolü

Dosyalar:

  • app/Http/Requests/CampaignRequest.php
  • app/Services/TrackingService.php
  • app/Services/CampaignService.php

4. XSS ve CSRF Koruması

XSS Koruması

  • Blade escaping kullanılıyor ({{ }})
  • Input sanitization ile HTML etiketleri temizleniyor
  • User Agent ve diğer input'lar sanitize ediliyor

CSRF Koruması

  • Tüm form'larda @csrf token'ı mevcut
  • Laravel'ın built-in CSRF middleware'i aktif

Kontrol Edilen Dosyalar:

  • Tüm Blade view dosyaları (@csrf mevcut)
  • resources/views/campaigns/*.blade.php
  • resources/views/auth/*.blade.php

5. Security Headers

SecurityHeaders Middleware Eklendi

  • X-Content-Type-Options: nosniff
  • X-Frame-Options: SAMEORIGIN
  • X-XSS-Protection: 1; mode=block
  • Referrer-Policy: strict-origin-when-cross-origin
  • Strict-Transport-Security (production, HTTPS için)

Dosyalar:

  • app/Http/Middleware/SecurityHeaders.php
  • bootstrap/app.php (middleware kayıt)

6. Error Handling ve Logging

Comprehensive Logging Eklendi

  • Campaign oluşturma/güncelleme/silme loglanıyor
  • Tracking event'lerde hata durumları loglanıyor
  • Invalid key format, IP adresi gibi durumlar loglanıyor

Error Handling İyileştirildi

  • Try-catch blokları eklendi
  • Production'da detaylı hata mesajları gizleniyor
  • Exception handling middleware yapılandırıldı

Dosyalar:

  • app/Services/CampaignService.php
  • app/Services/TrackingService.php
  • bootstrap/app.php

7. Veritabanı Optimizasyonları

Index'ler Eklendi

  • events.opened_at için index (zaman bazlı sorgular)
  • events.campaign_id için index (ilişki sorguları)
  • events.ip_address için index (rate limiting)
  • Composite index: campaign_id + ip_address + opened_at (rate limiting performansı)

Dosyalar:

  • database/migrations/2025_06_26_072500_add_indexes_to_events_table.php

8. Güvenlik Testleri

Kapsamlı Güvenlik Testleri Yazıldı

  • Authorization testleri (başka kullanıcının kampanyasına erişim)
  • XSS koruması testleri
  • SQL Injection koruması testleri
  • CSRF koruması testleri
  • Rate limiting testleri
  • Input validation testleri
  • Security headers testleri

Dosyalar:

  • tests/Feature/SecurityTest.php

9. Production Hazırlığı

Production Dokümantasyonu

  • .env yapılandırma önerileri
  • Nginx yapılandırma örneği
  • Güvenlik kontrol listesi
  • Backup stratejisi
  • Monitoring önerileri

Dosyalar:

  • PRODUCTION.md

Güvenlik Kontrol Listesi

✅ Tamamlananlar

  • Authorization Policy'leri
  • Rate Limiting
  • Input Validation ve Sanitization
  • XSS Koruması
  • CSRF Koruması
  • Security Headers
  • Error Handling ve Logging
  • Veritabanı Index'leri
  • Güvenlik Testleri
  • Production Dokümantasyonu

🔄 Production'da Yapılması Gerekenler

  • .env dosyası yapılandırması (APP_DEBUG=false, APP_ENV=production)
  • SSL/TLS sertifikası kurulumu
  • Veritabanı migration'ları çalıştırma
  • Index migration'ını çalıştırma
  • Cache optimizasyonları (config:cache, route:cache, view:cache)
  • Log rotation yapılandırması
  • Backup stratejisi uygulama
  • Monitoring ve alerting kurulumu
  • Firewall yapılandırması
  • Fail2ban kurulumu

Güvenlik Best Practices

1. Environment Variables

  • .env dosyası asla commit edilmemeli
  • Production'da güçlü şifreler kullanılmalı
  • APP_DEBUG=false production'da zorunlu

2. Veritabanı

  • Güçlü veritabanı şifreleri
  • Sadece gerekli kullanıcıların erişimi
  • Düzenli backup'lar

3. Web Server

  • HTTPS zorunlu
  • Security headers aktif
  • Rate limiting yapılandırılmış

4. Monitoring

  • Log dosyaları düzenli kontrol edilmeli
  • Anormal aktiviteler izlenmeli
  • Error tracking (Sentry vb.) kullanılmalı

Güvenlik Açığı Raporlama

Eğer bir güvenlik açığı bulursanız, lütfen doğrudan repository maintainer'a ulaşın:

  • Email: [maintainer email]
  • GitHub Issues: Güvenlik açıkları için kullanmayın, özel kanal kullanın

Güncellemeler

  • Laravel ve paket güncellemelerini düzenli yapın
  • composer audit ile güvenlik açıklarını kontrol edin
  • Güvenlik yamalarını hemen uygulayın

There aren’t any published security advisories