PHP CSRF Token Oluşturma CSRF Açığına Karşı Güvenlik Fonksiyonları
Blog'a Dön

PHP CSRF Token Oluşturma CSRF Açığına Karşı Güvenlik Fonksiyonları

Buğra Şıkel

PHP CSRF saldırılarına karşı önlem


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.

Web sitesine mi ihtiyacınız var ?

Bunları da beğenebilirsiniz

Javascript ile Panoya Kopyalama Yapımı
18 Ekim 2022

Javascript ile Panoya Kopyalama Yapımı

Merhabalar, bu yazımızda html, css, javascript kullanarak panoya kopyalama (copy clipboard) yapacağız. Kodlamamızı bitirdikten sonra ulaşacağımız sonuç aşağıdaki gibi olacak. İlk olarak kopyalanacak metnin bulunacağı…

Devamını Oku
ChatGPT ile Teknolojinin Geleceği ve Yazılıma Katkıları
6 Aralık 2022

ChatGPT ile Teknolojinin Geleceği ve Yazılıma Katkıları

Son günlerde gündemde olan bir konudan bahsetmek istiyorum. OpenAI tarafından geliştirilen ChatGPT kullanıma sunuldu. ChatGPT ile yapabileceklerimiz neredeyse sınırsız gibi gözüküyor. Kodlama konusunda da oldukça…

Devamını Oku
Yüksek Hacimli Sensör Verileri İçin AI Destekli Asenkron Kuyruk Yönetimi Stratejileri: Performans ve Verimlilik Optimizasyonu
11 Şubat 2026

Yüksek Hacimli Sensör Verileri İçin AI Destekli Asenkron Kuyruk Yönetimi Stratejileri: Performans ve Verimlilik Optimizasyonu

Bu blog yazısı, IoT ve endüstriyel otomasyon gibi alanlarda yüksek hacimli sensör verilerini işlemek için yapay zeka destekli asenkron kuyruk yönetimi stratejilerini inceliyor. Gecikmeyi azaltma, ölçeklenebilirliği artırma ve kaynak kullanımını optimize etme yöntemlerini keşfedin.

Devamını Oku
AI Asistan