

CSRF ya da XSRF Saldırısı Nedir?
XSRF ya da CSRF (İngilizce: cross-site request forgery, Türkçe: sitelerarası istek sahtekârlığı), internet sitelerini hedef alan kötü niyetli bir exploit türüdür. XSRF ile internet sitesinin güvendiği bir kullanıcı üzerinden, siteye izin verilmeyen ya da kullanıcının farkında olmadığı komutlar gönderilir. Kötü niyetli bir web sitesinin bu tür komutları iletebilmesinin birçok yolu vardır; örneğin özel olarak hazırlanmış resim etiketleri, gizli formlar ve JavaScript XMLHttpRequests, kullanıcının etkileşimi ve hatta bilgisi olmadan çalışabilir. Bir kullanıcının belirli bir siteye güveninden yararlanan siteler arası komut çalıştırmanın (İngilizce: cross-site scripting) aksine, CSRF bir sitenin kullanıcının tarayıcısında sahip olduğu güvenden yararlanır.
Bir CSRF saldırısında, masum bir son kullanıcı, bir saldırgan tarafından kandırılarak, istemedikleri bir web isteği gönderir. Bu, web sitesinde yanlışlıkla istemci veya sunucu veri sızıntısı, oturum durumunun değiştirilmesi veya bir son kullanıcının hesabının manipülasyonunu içerebilecek eylemlerin gerçekleştirilmesine neden olabilir.
CSRF ya da XSRF Saldırısı Nasıl Önlenir?
Bu saldırı türlerini CSRF token üreterek ve her türlü istek-request-lerde bu tokenları kontrol ederek, karşılaştırarak güvenlik önlemi alabiliriz. Bu sayede gerçek oturumun sahibindeki tokenlar eşleşmeyeceğinden dolayı saldırganın saldırılarını boşa çıkarmış oluyoruz.
İlk olarak oturum (session) işlemlerini başlatacağımız alanda $token değişkenimiz tanımlıyoruz.
session_start(); // oturumumuzu başlatıyoruz.
//CSRF token olup olmadığını kontrol ediyoruz, eğer yoksa token oturumumuzu oluşturup bu tokeni bir değişkene aktarıyoruz.
if (empty($_SESSION['token'])) {
$_SESSION['token'] = bin2hex(random_bytes(32));
}
$token = $_SESSION['token'];
Şimdi token değişkenimizi göndereceğimiz isteklerde gizli bir inputun içerisine yerleştiriyoruz. Ya da bunu ajax ile göndereceksek javascript değişkeni olarak da yazdırabilirsiniz.
<input type="hidden" name="token" value="<?= $token ?>" />
Şimdi sıra bu değişkeni gönderdiğimiz istek tarafında kontrol etmekte.
if (!empty($_POST['token'])) {
if (hash_equals($_SESSION['token'], $_POST['token'])) {
// Eğer oluşturduğumuz token'lar uyuşuyorsa yapmak istediğimiz işleme bu alanda devam edebiliriz.
} else {
// Eğer bir uyuşmazlık varsa burada işlemi öldürüp hatayı bastırıyoruz.
die("Erişim reddedildi!");
}
}
Yukarıdaki anlatımdaki işlemleri uygulayarak siz de kendinizi CSRF (XSRF) saldırılarına karşı koruyabilirsiniz.
Diğer yazılarıma göz atmak için tıklayın.
Bunları da beğenebilirsiniz

vLLM ile LLM Sunumunda Mühendislerin Düştüğü 5 PagedAttention ve VRAM Tuzağı
Production ortamında vLLM kullanan mühendislerin PagedAttention, KV Cache ve VRAM yönetiminde yaptığı 5 kritik konfigürasyon hatası, tespiti ve çözümleri.

PHP ile QR Kod Oluşturucu Fonksiyonu
Merhabalar, bu içeriğimizde PHP ile QR Kod oluşturacak bir fonksiyon yazacağız. Bu fonksiyon ile istediğimiz verileri QR koda dönüştürebilir ve bu verinin çıktısını alabiliriz. Bu…

WebAssembly ile Tarayıcıda Yüksek Performans: Rust ve Go ile Güçlü Entegrasyon ve Uygulamalar
WebAssembly (Wasm) ile web uygulamalarınızda eşsiz bir performans artışı sağlayın. Bu rehberde, Rust ve Go dillerini kullanarak tarayıcıda yüksek performanslı işlemler geliştirmenin yollarını ve gerçek dünya kullanım senaryolarını keşfedin.