Bir CSRF saldırısının nasıl çalıştığını anlamak için öncelikle web uygulamalarında nasıl işlem yapıldığını bilmek gerekir. Bir kullanıcı, güvenli bir web sitesine giriş yaptıktan sonra, bu site ona özel bir oturum açar. CSRF saldırıları, bu oturum üzerinden kötü niyetli bir işlem yapmayı amaçlar. Örneğin, bir banka sitesine giriş yapmış bir kullanıcı, farkında olmadan parasını başka bir hesaba aktarabilir.
CSRF Saldırıları Neden Tehlikelidir?
CSRF saldırıları, saldırganın güvenli bir uygulamaya dair hiçbir bilgiye sahip olmadan, kurbanın oturumunu kötüye kullanmasına olanak tanır. Kullanıcı, aslında güvenli bir işlem yapıyormuş gibi görünse de, arka planda saldırganın istediği bir eylem gerçekleştirilmiş olur. Bu tür saldırılar çoğu zaman gizli kalır ve ciddi veri kayıplarına veya güvenlik ihlallerine neden olabilir.
CSRF Saldırılarına Karşı Alınabilecek 7 Önlem
1. CSRF Token Kullanmak
Her formda, işlemi gerçekleştiren kişinin gerçekten kullanıcı olduğuna dair bir doğrulama yapılmalıdır. CSRF token, her formun içine yerleştirilen benzersiz bir anahtar olup, sunucunun bu isteğin gerçekten kullanıcıdan gelip gelmediğini doğrulamasına olanak tanır. Bu token, saldırganın tahmin etmesi veya yeniden kullanması imkansız bir değerdir.
TokenGenerator.generate(); 2. SameSite Çerez Özelliğini Etkinleştirmek
Web tarayıcıları, CSRF saldırılarına karşı koruma sağlamak için SameSite çerez özelliği sunmaktadır. Bu özellik, çerezlerin yalnızca aynı site üzerindeki isteklerde gönderilmesini sağlar. Farklı bir site üzerinden yapılan isteklerde çerezler gönderilmez, böylece saldırganın istek yapabilmesi engellenir.
3. Kullanıcıların Oturum Sürelerini Sınırlandırmak
Eğer bir kullanıcı uzun süre boyunca işlem yapmadan web sitesinde kalıyorsa, oturumunu sonlandırmak iyi bir güvenlik önlemidir. Bu sayede saldırganın açık bir oturum üzerinde işlem yapma şansı azalır.
4. Güçlü Kimlik Doğrulama ve İki Faktörlü Kimlik Doğrulama (2FA) Kullanmak
Sadece bir şifre ile yapılan girişler, her zaman güvensizdir. İki faktörlü kimlik doğrulama (2FA), güvenliği artırmak için kullanıcıdan hem bir şifre hem de başka bir doğrulama (telefon numarası, e-posta doğrulaması vb.) isteyerek, CSRF saldırılarının başarıya ulaşmasını zorlaştırır.
5. Referer ve Origin Başlıklarını Kontrol Etmek
Sunucu tarafında, gelen isteklerin “Referer” ve “Origin” başlıkları kontrol edilerek, isteğin hangi kaynaktan geldiği doğrulanabilir. Eğer istek, beklenmedik bir kaynaktan geliyorsa, işlem iptal edilebilir.
6. GET ve POST İsteklerini Ayırmak
GET istekleri genellikle veri almak için kullanılır, POST ise veri göndermek için. CSRF saldırıları, kullanıcıyı bir GET isteği ile yönlendirerek, verilerin değiştirilmesine neden olabilir. Bu yüzden, önemli işlemler için yalnızca POST isteklerini kullanmak, güvenliği artıracaktır.
7. Web Uygulama Güvenlik Duvarları (WAF) Kullanmak
Bir Web Uygulama Güvenlik Duvarı (WAF), sitenizi CSRF gibi zararlı isteklerden koruyabilir. Bu yazılımlar, gelen istekleri analiz ederek, şüpheli aktiviteleri engeller ve uygulamanızı korur.
Sonuç
Web uygulamalarındaki güvenlik açıkları, çoğu zaman gözden kaçan küçük hatalardan kaynaklanır. CSRF saldırıları da bu tür küçük güvenlik açıklarını hedef alır ve ciddi sonuçlara yol açabilir. Ancak, alınacak birkaç basit önlemle web uygulamanızın güvenliğini önemli ölçüde artırabilirsiniz. Her zaman kullanıcı verilerini korumak ve güvenli uygulamalar geliştirmek için dikkatli olmalısınız.