CSRF Nedir?
Örneğin, bir kullanıcı bankacılık sitesine giriş yaptı ve bir süre sonra kötü niyetli bir siteyi ziyaret etti. Bu sırada, saldırganın hazırladığı zararlı bir link ya da form, kullanıcının bankacılık hesabına para transferi yapmasına neden olabilir. Kullanıcı, hiçbir şey fark etmeden işlemi gerçekleştirmiş olur. İşte bu, CSRF saldırısının ta kendisidir.
CSRF Nasıl Çalışır?
1. Kullanıcı Bir Web Sitesine Giriş Yapıyor: Kullanıcı, örneğin bir bankacılık uygulamasına giriş yapar ve bir oturum açar.
2. Zararlı Bir Web Sayfası: Hacker, kullanıcının güvenliğine dair herhangi bir şüphe uyandırmayan bir siteyi hazırlayarak kullanıcıyı buraya yönlendirir.
3. Sahte İstek Gönderimi: Kullanıcı bu zararlı sayfayı ziyaret ettiğinde, hacker, kullanıcının kimliğiyle bankacılık sitesine sahte bir istek gönderir. Bu işlem, kullanıcının farkında olmadığı bir şekilde gerçekleştirilir.
4. Sonuç: Bankacılık uygulaması, isteğin kullanıcının isteğiyle yapıldığını kabul eder ve parayı başka bir hesaba transfer eder.
CSRF, kullanıcıları ve web uygulamalarını tehdit eder, çünkü saldırgan kullanıcıları manipüle edebilir, hesaplarına zarar verebilir veya onların izni olmadan çeşitli işlemler yapabilir.
CSRF Saldırıları Neden Tehlikelidir?
Bir diğer önemli risk ise herhangi bir ek yazılım ya da kötü amaçlı kod yüklemeye gerek duyulmamasıdır. CSRF, yalnızca kullanıcıların tarayıcılarını kullanarak saldırganın isteklerini gerçekleştirmesini sağlar.
CSRF’den Korunmak İçin Neler Yapılabilir?
# 1. CSRF Token Kullanımı
Herhangi bir form ya da istek, sunucuya gönderildiğinde, bu isteğe özgü bir token eklemek güvenliği artırır. Bu token, yalnızca geçerli oturumdaki kullanıcıya özgüdür ve CSRF saldırılarının önüne geçer.
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($_POST["csrf_token"] != $_SESSION["csrf_token"]) {
// Token uyuşmazsa işlem yapma
die("CSRF attack detected!");
}
}
// Form içeriğini burada işleyebilirsiniz
# 2. Referer Başlığını Kontrol Etmek
Web sunucuları, bir isteğin kaynağını belirten Referer başlığını kontrol edebilir. Eğer başlık, beklenen alan adı dışında bir yerden geliyorsa, o isteği reddetmek, CSRF saldırısını önlemeye yardımcı olabilir.
Çerezler üzerinden yapılacak saldırıları engellemek için HTTPOnly ve Secure bayrakları eklenmelidir. Bu, çerezlerin yalnızca güvenli bağlantılar üzerinden ve JavaScript ile erişilemez olmasını sağlar.
# 4. GET Yöntemiyle Kritik İşlem Yapmamak
Kritik işlemler, GET isteği ile değil, sadece POST istekleri ile yapılmalıdır. Çünkü GET istekleri tarayıcılar tarafından önbelleğe alınabilir ve URL'lere dahil edilebilir.
1. Güvenilir Siteleri Ziyaret Edin: Bilmediğiniz ve güvenmediğiniz web sitelerinde işlem yapmayın.
2. Oturumlarınızı Kapatın: Önemli bir işlem yapmadan önce, web uygulamalarında oturumunuzu kapatın.
3. Tarayıcı Güvenliği: Tarayıcınızda güvenlik eklentileri kullanarak sahte web sayfalarına karşı korunmaya çalışın.
4. Çift Faktörlü Kimlik Doğrulama: Hesaplarınızda mümkünse çift faktörlü kimlik doğrulama kullanın.