CSRF: kullanıcılarının hiç göndermek istemediği istekler

Siteler arası istek sahteciliği tarayıcıların cookie'leri otomatik eklemesini kötüye kullanır. Başka bir site, giriş yapmış bir ziyaretçinin tarayıcısına seninkine form gönderttirebilir ve oturum cookie'si de onunla gider.

Örnek

Zafiyetli
app.use(session({ secret: process.env.SESSION_SECRET }));

app.post("/transfer", isLoggedIn, (req, res) => {
  transfer(req.session.userId, req.body.to, req.body.amount);
  res.redirect("/account");
});
Güvenli
app.use(session({
  secret: process.env.SESSION_SECRET,
  cookie: { secure: true, httpOnly: true, sameSite: "lax" },
}));
app.use(doubleCsrfProtection); // csrf-csrf, or lusca.csrf()

app.post("/transfer", isLoggedIn, (req, res) => { /* … */ });

Nasıl oluşur

Saldırganın sitesindeki bir sayfa, https://senin-siten.com/transfer adresine gönderim yapan ve yüklenince kendini gönderen bir form içerir. Oturum cookie'n siteler arası isteklerde gönderiliyorsa ve uç nokta geçerli oturum taşıyan her isteği kabul ediyorsa transfer gerçekleşir. CSRF token'ı ve SameSite olmayan cookie oturumları klasik kurulumdur.

Nasıl düzeltilir

Siteler arası bir isteğin gerçek bir istek gibi görünmesini imkânsız kıl.

  • Oturum cookie'lerinde SameSite=Lax (veya Strict) ayarla
  • Durum değiştiren route'lara CSRF token'ı ekle (csrf-csrf, lusca, framework'ün yerleşikleri)
  • GET isteklerinde asla durum değiştirme
  • Header'da token ile kimlik doğrulayan API'lerde CSRF geçerli değildir — sorun cookie'lerdir

RepoVerse bunu nasıl bulur

  • OrtaCSRF koruması olmayan cookie oturumları

    Başka bir site, giriş yapmış kullanıcı adına durum değiştiren route'lara form gönderebilir — tarayıcı oturum cookie'sini kendiliğinden ekler.

    veri akışı · CWE-352

  • DüşükOturum cookie'sinde SameSite yok

    Varsayılanı `Lax` olmayan tarayıcılar cookie'yi siteler arası form gönderimlerine ekler; CSRF saldırısı buna dayanır.

    web sitesi · CWE-1275

Sorular

SameSite=Lax CSRF'yi durdurmaya yeter mi?
Destekleyen tarayıcılarda siteler arası POST'ları engeller; bu da saldırıların çoğunu kapsar. Eski tarayıcılar ve durum değiştiren üst seviye GET'ler gibi SameSite'ın kapsamadığı akışlar için token'lar yine önerilir.
RepoVerse eksik CSRF korumasını nasıl tespit ediyor?
Durum değiştiren route'ları olan, CSRF middleware'i ve SameSite ayarı olmayan cookie tabanlı oturumları arar ve etkilenen route'ları bulguda listeler.

İlgili

Güncellendi 2026-10-11