Cookie Flush Mekanizması

TEST BAŞARILI - v4

ÇALIŞIYOR 14 Şubat 2026

COOKİE FLUSH MEKANİZMASI ÇALIŞIYOR!

curl ile test edildi. 419 hatası alındığında tüm cookie'ler başarıyla expire ediliyor.

Test Sonuçları

Test Komutu

curl -s -k -X POST 'https://www.muzibu.com/login' \
  -H 'Cookie: FAKE_SESSION_123=test123; FAKE_XSRF_456=test456' \
  -d 'email=test@test.com&password=test123&_token=invalidcsrftoken'

Sonuç Özeti

  • HTTP Status: 419
  • Set-Cookie headerları: 15+ adet
  • Max-Age: 0 (expire)
  • 3 farklı domain kapsamı

Set-Cookie Header Analizi

Response Headers (419 durumunda)
Cookie Adı Domain Max-Age Expires Durum
tenant_1001_session .muzibu.com 0 2021-02-14 Expired
laravel_session_1001 .muzibu.com 0 2021-02-14 Expired
laravel_session .muzibu.com 0 2021-02-14 Expired
muzibu_session .muzibu.com 0 2021-02-14 Expired
XSRF-TOKEN .muzibu.com 0 2021-02-14 Expired
tenant_1001_session www.muzibu.com 0 2021-02-14 Expired
laravel_session_1001 www.muzibu.com 31536000 2027-02-13 Yeni Session
laravel_session www.muzibu.com 0 2021-02-14 Expired
muzibu_session www.muzibu.com 0 2021-02-14 Expired
XSRF-TOKEN www.muzibu.com 0 2021-02-14 Expired
tenant_1001_session muzibu.com 0 2021-02-14 Expired
laravel_session_1001 muzibu.com 0 2021-02-14 Expired
laravel_session muzibu.com 0 2021-02-14 Expired
muzibu_session muzibu.com 0 2021-02-14 Expired
XSRF-TOKEN muzibu.com 0 2021-02-14 Expired

Ne Anlama Geliyor?

Basit Anlatım (Herkes İçin)

Sorun neydi?
Kullanıcının tarayıcısında birden fazla "kimlik kartı" (cookie) birikiyordu. Bu kartlar birbiriyle çakışınca sistem "419 - Oturum Süresi Doldu" hatası veriyordu.

Çözüm ne oldu?
Artık 419 hatası oluştuğunda, sistem otomatik olarak TÜM eski kimlik kartlarını siliyor. Kullanıcı sayfayı yenilediğinde temiz bir başlangıç yapabiliyor.

Kısır döngü kırıldı! Kullanıcılar artık 419 hatasında sıkışıp kalmayacak.

Teknik Detaylar (Geliştiriciler İçin)

Değiştirilen dosya:
app/Http/Middleware/VerifyCsrfToken.php

Mekanizma:
handle() metodu override edildi. Token mismatch durumunda Cookie::forget() ile 5 farklı cookie, 3 farklı domain'de expire ediliyor.

Expire edilen cookie'ler:
tenant_1001_session, laravel_session_1001, laravel_session, muzibu_session, XSRF-TOKEN

Mevcut Kod (VerifyCsrfToken.php)

app/Http/Middleware/VerifyCsrfToken.php Aktif
public function handle($request, \Closure $next)
{
    // Token kontrolü
    if ($this->tokensMatch($request)) {
        return tap($next($request), function ($response) use ($request) {
            if ($this->shouldAddXsrfTokenCookie()) {
                $this->addCookieToResponse($request, $response);
            }
        });
    }

    // TOKEN MISMATCH - Cookie flush ile response döndür
    \Log::info('CSRF Mismatch - Cookie Flush triggered', [
        'ip' => $request->ip(),
        'url' => $request->fullUrl(),
    ]);

    $response = response()->view('errors.419', [], 419);

    // Tüm olası session cookie'lerini expire et
    $cookiesToExpire = [
        'tenant_1001_session',
        'laravel_session_1001',
        'laravel_session',
        'muzibu_session',
        'XSRF-TOKEN',
    ];

    $domains = ['.muzibu.com', 'www.muzibu.com', 'muzibu.com'];

    foreach ($cookiesToExpire as $cookieName) {
        foreach ($domains as $domain) {
            $response->headers->setCookie(
                Cookie::forget($cookieName, '/', $domain)
            );
        }
    }

    return $response;
}

Log Kontrolü

Log Mesajları

419 hatası oluştuğunda Laravel log'da şu mesajları görmelisiniz:

tail -100 storage/logs/laravel.log | grep -E "CSRF|Cookie|Flush|VerifyCsrfToken"

# Beklenen çıktı:
[2026-02-14 00:41:40] local.DEBUG: VerifyCsrfToken::handle() CALLED
[2026-02-14 00:41:40] local.WARNING: CSRF: Token mismatch {...}
[2026-02-14 00:41:40] local.INFO: CSRF Mismatch - Cookie Flush triggered {...}

Not: curl testi sırasında log kaydı görünmeyebilir (cache veya log level nedeniyle). Gerçek tarayıcı testiyle doğrulanmalı.

Sonraki Adımlar

1

Gerçek Tarayıcı Testi

Chrome DevTools ile fake cookie ekleyip test et (kullanıcı senaryosu)

2

Log Seviyesini Kontrol Et

APP_DEBUG=true ve LOG_LEVEL=debug olduğundan emin ol

3

Production İzleme

419 hata oranının düşüp düşmediğini izle

Versiyon Geçmişi

Versiyon İçerik Tarih
v4 (Bu rapor) curl test sonuçları - Cookie flush ÇALIŞIYOR 14 Şubat 2026
v3 KESİN KANIT - ABA test ile 419 reproduce edildi 13 Şubat 2026
v2 Sorunun mekanizması analizi 13 Şubat 2026
v1 İlk analiz raporu 13 Şubat 2026

Test Özet Tablosu

419 sayfası geldi mi? EVET
Set-Cookie header var mı? EVET (15+)
Cookie'ler expire mi oldu? EVET (Max-Age=0)
Laravel log kaydı? Kontrol Edilmeli