Tüm Sayfalar / 58 - CSRF Koruması
Sayfa 58 / 161
Form Güvenliği

CSRF Koruması

Form gönderen gerçekten sizin siteniz mi?

Biz Ne Yaptık?

CSRF (Cross-Site Request Forgery) saldırılarına karşı koruma sağladık. Kötü niyetli bir site, kullanıcı adına işlem yapmaya çalışırsa engelleniyor.

Basit Anlatım

Düşünün ki bir banka sitesine giriş yaptınız. Sonra başka bir siteye girdiniz. O kötü site, sizin adınıza bankaya "para transfer et" komutu göndermeye çalışabilir. CSRF token bunu engeller: "Bu istek gerçekten bizim sitemizden mi geliyor?"

Korumasız Sistem

  • Herhangi bir site form gönderebilir
  • Kullanıcı adına işlem yapılabilir
  • Hesap ele geçirilebilir

CSRF Korumalı

  • Her form'da gizli token var
  • Token olmadan istek reddedilir
  • Sadece gerçek formlar çalışır
100%
Form Koruması
40 chr
Token Uzunluğu
419
Hata Kodu

Arkada Ne Oluyor?

1

Sayfa Yüklenir

Her form'a otomatik olarak gizli bir CSRF token eklenir.

2

Kullanıcı Form Gönderir

Form verisiyle birlikte token da sunucuya gönderilir.

3

Token Doğrulanır

Sunucu token'ı session'daki ile karşılaştırır.

4

İstek İşlenir veya Reddedilir

Token eşleşirse işlem yapılır, yoksa 419 hatası verilir.

Geçerli Token

Form işlenir, kullanıcı başarılı mesajı görür.

Geçersiz Token

"419 Page Expired" hatası, istek reddedilir.

Kullanıcı Olarak Ne Yaşarsınız?

Görünmez Koruma

Token arka planda çalışır, kullanıcı fark etmez

Session Süresi

Uzun süre beklerseniz sayfa yenileme gerekebilir

Güvenli İşlem

Tüm formlar (favori, ödeme, profil) korumalı

API İstekleri

AJAX istekleri de X-CSRF-TOKEN header ile korunur

Arkaplanda Neler Çalışıyor?

Form gönderdiğinizde sistem isteğin gerçekten sizin tarayıcınızdan gelip gelmediğini doğrular. İşte CSRF korumasının teknik işleyişi:

1. Token Oluşturma

Sayfa yüklendiğinde Str::random(40) ile 40 karakterlik rastgele token üretilir ve session(['_token' => $token]) ile saklanır.

2. Form'a Ekleme

Blade'de @csrf direktifi kullanılır. Bu, <input type="hidden" name="_token" value="..."> olarak HTML'e dönüşür.

3. Form Gönderimi

Form submit edildiğinde _token değeri POST verisiyle birlikte sunucuya gönderilir. AJAX isteklerinde X-CSRF-TOKEN header kullanılır.

4. Middleware Kontrolü

VerifyCsrfToken middleware'i her POST/PUT/DELETE isteğinde devreye girer. $except dizisinde tanımlı URL'ler hariç tutulur.

5. Token Karşılaştırma

hash_equals(session('_token'), $request->_token) ile gönderilen token session'daki ile karşılaştırılır. Timing attack'a karşı güvenli karşılaştırma yapılır.

6. Hata Durumu (419)

Token eşleşmezse TokenMismatchException fırlatılır ve 419 hata sayfası gösterilir. Kullanıcı sayfayı yenileyerek yeni token almalıdır.

Bu Sayfanın Anahtar Terimleri

CSRF

(Cross-Site Request Forgery)

Başka siteden sahte istek gönderme saldırısı. Sahte imza gibi.

Token

(Jeton/Belirteç)

Rastgele üretilen gizli kod. Her form'da benzersiz.

419 Page Expired

(Sayfa Süresi Doldu)

Token geçersiz olduğunda gösterilen hata sayfası.

Session

(Oturum)

Kullanıcıya özel geçici veri deposu. Token burada saklanır.

CSRF Token
a8f7d3e2b1c9...
Form Gönderimi
Token Doğrulandı
100%
Form Koruması
0
CSRF Saldırısı