İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Güvenlik

CSRF Token ile Form Güvenliği

Güvenlik üzerinde çalışırken CSRF Token ile Form Güvenliği konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.

Ferdi GidenFerdi Giden 2 dk okuma 31
CSRF Token ile Form Güvenliği
İçindekiler
  1. Konuya genel bakış
  2. Bilmeniz gereken 5 temel nokta
  3. PHP ile uygulama
  4. Avantajları
  5. Son söz

Güvenlik üzerinde çalışırken CSRF Token ile Form Güvenliği konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.

Konuya genel bakış

CSRF (siteler arası istek sahteciliği) saldırısında kullanıcı başka bir siteyi gezerken, tarayıcısı farkında olmadan sizin sitenize oturum çerezleriyle istek gönderir: şifre değişir, sipariş verilir, kayıt silinir. Her forma eklenen ve oturuma bağlı rastgele bir belirteç bu isteklerin sahte olduğunu anlamanın en güvenilir yoludur.

Bilmeniz gereken 5 temel nokta

  • Rastgele ve oturuma bağlı: Belirteç random_bytes ile üretilir ve oturumda saklanır.
  • hash_equals: Karşılaştırma sabit sürede yapılır, zamanlama saldırısına açık kapı bırakılmaz.
  • Yalnız değişiklik yapan istekler: GET istekleri veri değiştirmemeli; belirteç POST, PUT ve DELETE için zorunlu olmalı.
  • SameSite çerezi: Oturum çerezinde SameSite=Lax ek bir savunma katmanı sağlar.
  • AJAX: Belirteç meta etiketinden okunup X-CSRF-Token başlığıyla gönderilebilir.

PHP ile uygulama

Aşağıdaki PHP örneği, yukarıdaki noktaların gerçek bir kodda nasıl bir araya geldiğini gösteriyor:

session_start();
if (empty($_SESSION['csrf'])) $_SESSION['csrf'] = bin2hex(random_bytes(32));

// Formda
echo '<input type="hidden" name="csrf" value="' . htmlspecialchars($_SESSION['csrf']) . '">';

// İşlemde
if ($_SERVER['REQUEST_METHOD'] === 'POST'
    && !hash_equals($_SESSION['csrf'], (string)($_POST['csrf'] ?? ''))) {
    http_response_code(419);
    exit('Oturum süresi doldu, sayfayı yenileyip tekrar deneyin.');
}

Kodu doğrudan kopyalamak yerine her satırın ne yaptığını anlayarak uyarlamanız, ileride çıkacak hataları çözmeyi kolaylaştırır.

PHP 8 ile gelen match ifadesi ve isimli argümanlar, uzun switch ve parametre listelerini daha okunur hâle getirir.

Avantajları

CSRF Token ile Form Güvenliği konusunu doğru uygulamanın başlıca kazanımları şunlar:

  • Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
  • Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
  • Hataların canlı ortama çıkmadan fark edilmesine yardım eder
  • Kullanıcı güvenini ve marka itibarını korur

Son söz

CSRF Token ile Form Güvenliği konusunda ele aldığımız 5 nokta, günlük çalışmada en sık ihtiyaç duyulan kısmı kapsıyor. Özellikle Rastgele ve oturuma bağlı ve AJAX başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al