Etki
Siteler Arası İstek Sahteciliği (CSRF), bir saldırganın kurbanın tarayıcısını, kurbanın kimliğinin doğrulandığı farklı bir web sitesinde istenmeyen eylemler gerçekleştirmesi için kandırmasına olanak tanır. Tarayıcılar, isteklere çerezler gibi ortam kimlik bilgilerini otomatik olarak dahil ettiğinden, bir saldırgan, kullanıcının bilgisi olmadan şifreleri değiştirme, verileri silme veya işlemleri başlatma gibi durum değiştiren işlemleri taklit edebilir.
Temel Neden
CSRF'nin temel nedeni, web tarayıcısının, bir alan adına bir istek yapıldığında, isteğin kaynağına bakılmaksızın, bir alan adı ile ilişkili çerezleri gönderme yönündeki varsayılan davranışıdır. Talebin kaynağı [S1]. Bir isteğin, uygulamanın kendi kullanıcı arayüzünden kasıtlı olarak tetiklendiğine dair özel bir doğrulama olmadan, sunucu, meşru bir kullanıcı eylemi ile sahte bir eylem arasında ayrım yapamaz.
Django CSRF Koruma Mekanizmaları
Django, ara yazılım ve şablon entegrasyonu [S2] aracılığıyla bu riskleri azaltmak için yerleşik bir savunma sistemi sağlar.
Ara Yazılım Aktivasyonu
django.middleware.csrf.CsrfViewMiddleware, CSRF korumasından sorumludur ve genellikle [S2] varsayılan olarak etkinleştirilir. CSRF saldırılarının zaten [S2] ile gerçekleştirildiğini varsayan herhangi bir görünüm ara yazılımından önce konumlandırılmalıdır.
Şablon Uygulaması
Tüm dahili POST formları için geliştiricilerin, {% csrf_token %} etiketini <form> öğesi [S2] içine dahil etmesi gerekir. Bu, sunucunun daha sonra kullanıcının oturumuna göre doğruladığı benzersiz, gizli bir belirtecin isteğe dahil edilmesini sağlar.
Token Sızıntısı Riskleri
Kritik bir uygulama ayrıntısı, {% csrf_token %}'nin hiçbir zaman [S2] harici URL'lerini hedefleyen formlara dahil edilmemesi gerektiğidir. Bunu yapmak, gizli CSRF belirtecinin üçüncü bir tarafa sızdırılmasına neden olabilir ve potansiyel olarak kullanıcının oturum güvenliği [S2]'yi tehlikeye atabilir.
Tarayıcı Düzeyinde Savunma: SameSite Çerezleri
Modern tarayıcılar, derinlemesine bir [S1] savunma katmanı sağlamak amacıyla Set-Cookie başlığı için SameSite özelliğini sunmuştur.
- Katı: Çerez yalnızca birinci taraf bağlamında gönderilir; bu, URL çubuğundaki sitenin, çerezin alan adı [S1] ile eşleştiği anlamına gelir.
- Gevşek: Çerez, siteler arası alt istekler (resimler veya çerçeveler gibi) üzerine gönderilmez, ancak bir kullanıcı, örneğin [S1] standart bağlantısını takip ederek kaynak siteye gittiğinde gönderilir.
FixVibe bunu nasıl test ediyor?
FixVibe artık geçitli aktif kontrol olarak CSRF korumasını içeriyor. Etki alanı doğrulamasının ardından active.csrf-protection, keşfedilen durum değiştiren formları inceler, CSRF belirteci şeklindeki girişleri ve SameSite çerez sinyallerini kontrol eder, ardından düşük etkili bir sahte kaynak gönderimi gerçekleştirmeye çalışır ve yalnızca sunucu bunu kabul ettiğinde rapor verir. Çerez kontrolleri aynı zamanda CSRF savunmasını derinlemesine azaltan zayıf SameSite özelliklerini de işaretler.
