Web güvenliği, bir internet kullanıcısının en çok göz ardı ettiği, ancak en önemli konu başlıklarından biridir. Her gün sosyal medya hesaplarınızda gezinirken, alışveriş yaparken, ya da sadece e-postalarınızı kontrol ederken farkında olmadan kendinizi büyük bir güvenlik riskiyle karşı karşıya bulabilirsiniz. Peki ya bu risklerden bir tanesi Cross-Site Request Forgery (CSRF) olsa? Eğer bu terimi daha önce hiç duymadıysanız, üzülmeyin, çünkü bu yazı size tam olarak CSRF'nin ne olduğunu ve nasıl çalıştığını anlatacak.
CSRF Nedir?
Örneğin, siz bankacılık uygulamanızda oturum açmışken, başka bir web sitesine göz atıyorsunuz. O sırada, kötü niyetli bir site, sizin bankacılık hesabınıza para transferi yapmak için bir istek gönderebilir. Çünkü oturum açtığınız sürece bankacılık uygulamanız, bu isteği gerçekten sizden geliyormuş gibi kabul edebilir.
CSRF'nin Çalışma Prensibi
1. Oturum Açma: Bir kullanıcı web uygulamasında (örneğin, bir bankacılık sitesinde) oturum açar.
2. Kötü Niyetli Sayfa: Kullanıcı, kötü niyetli bir web sitesine gider.
3. Gizli İstek Gönderme: Bu web sitesi, kullanıcıyı gizlice başka bir istekte bulunmaya zorlar. Bu istek, aslında kullanıcının tarayıcısından geliyormuş gibi görünür.
4. Hedef Uygulama: Web uygulaması, oturum açan kullanıcının kimliğini tanır ve bu isteği doğrulayıp işleme koyar.
İşte bu noktada devreye girer CSRF koruma yöntemleri.
CSRF'ye Karşı Korunma Yöntemleri
# 1. Anti-CSRF Tokenları Kullanmak
Örnek bir CSRF token kullanım kodu:
function getCSRFToken() {
// sunucudan token al
return document.querySelector('meta[name="csrf-token"]').getAttribute('content');
}
function submitForm(event) {
event.preventDefault();
let token = getCSRFToken();
fetch('/submit', {
method: 'POST',
headers: {
'X-CSRF-TOKEN': token,
'Content-Type': 'application/json'
},
body: JSON.stringify({ data: 'example' })
})
.then(response => response.json())
.then(data => console.log(data));
}
# 2. SameSite Çerez Özelliği
Örnek çerez ayarı:
document.cookie = "session_id=abc123; SameSite=Strict; Secure; HttpOnly";