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
| 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)
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
Gerçek Tarayıcı Testi
Chrome DevTools ile fake cookie ekleyip test et (kullanıcı senaryosu)
Log Seviyesini Kontrol Et
APP_DEBUG=true ve LOG_LEVEL=debug olduğundan emin ol
Production İzleme
419 hata oranının düşüp düşmediğini izle