EN
EN

Cross Site Request Forgery (CSRF) Nedir?


Günümüz dünyasında gerekli ihtiyaçlar için birçok farklı sektörde web uygulaması bulunmaktadır.  Kurumsal ve standart kullanıcılar tarafından kullanılan bu web uygulamalarının birçoğuna kişisel veriler ile üye olunur.  Web uygulamaları ve tarayıcılar arsında taşınan cookie (çerez) bilgileri kimlik bilgilerini içerdiğinden dolayı değerlidir ve güvenlik açısından önem arz eder.

CSRF (Cross Site Request Forgery) genel yapı olarak bir web sitesinin açığından faydalanarak site kullanıcılarının istekleri dışında sanki o kullanıcıymış gibi erişerek işlem yapılması sürecini içerir. Genellikle GET requestleri ve SESSION işlemlerinin doğru kontrol edilememesi durumlarındaki açıklardan saldırganların faydalanmasını sağlamaktadır.

CSRF zafiyeti OWASP Top 10 listesinde yer alan ve en sık karşılaşılan çevrimiçi saldırılardan biridir.  Bu zafiyet sıkça kullanılan popüler web uygulamalarında dahi görülmektedir.

CSRF Nasıl Gerçekleşir ?

CSRF saldırısı, daha önce kimliği doğrulanmış başka bir web sitesi aracılığıyla bir web uygulamasına istek gönderen kötü amaçlı bir bağlantı içerir. Elde edilen kimlik bilgileriyle mağdur kimliğine bürünülür ve kötü amaçlı faliyetlerde kimlik doğrulama bilgisi atlanılmış olur. Örneğin, bankacılık sistemine giriş sayfası tarayıcıda açık bulunduğu bir durumda , mail adresine gelen tehlikeli bir bağlantı tıklanarak saldırgana kullanıcı bilgileri verilmiş olur. Saldırgan bu bilgilerle bankacılık sistemine girip para transferi gerçekleştirebilir.

Bu tür saldırılar genellikle bankacılık, sosyal medya ve ağ cihazları için kullanılan web arayüzlerine karşı gerçekleştirilir.

CSRF Zafiyetinde Alınabilecek Önlemler

Sistem Taraflı Alınabilecek Önlemler

  • Token Kullanımı

Kullanıcıya  her oturum için random ve benzersiz “token” bilgisi verilir.

Örnek Senaryo;

Aşağıda verilen kodda saldırgan img etiketini kullanarak  bağlantıyı bir imaj bağlantısı olarak göstererek sisteme sanki daha önce kayıt olmuş bir kullanıcı gibi giriş yapmak istemektedir.

 

<img src=”abc.php?giris=dogru”>

Bu tür açıkları kapatmak için en pratik yol ise token kullanımıdır.

<?php

$_SESSION[“token”] = sha1(rand());

echo'<a href="abc.php?giris=dogru&token=.'$_SESSION["token"]."';

 

abc.php dosyasındaki session kontrolü ise şu şekilde olmalıdır:

<?php

if($_GET[“giris”]==dogru){

if(isset($_GET[“token”])&&$_GET[“token”]==$_SESSION[“token”]){

session_start();//Dogruysa oturumu baslat

}

else{

echo “token yanlış!”;

}

}

 

  • Get Metodu Yerine Post Metodu Kullanımı

Kullanıcıdan alınan önemli veriler POST metodu ile alınmalıdır.

  • CAPTCHA Kullanımı

Bir web formunda captcha (Completely Automated Public Turing test to tell Computers and Humans Apart) bilgisi doğru girilmediği sürece işlem gerçekleştirilemeyeceği için “CSRF” saldırısına karşı alınacak bir önlem niteliğindedir.

Kullanıcı Taraflı Alınacak Önlemler

  • Web uygulama verileri ve cookie bilgileri düzenli aralıklarla temizlenmelidir.
  • Kişisel bilgilerin bulunduğu web uygulamalarının oturum bilgileri bilgisayarda kayıtlı tutulmamalıdır.
  • Kaynağı belirsiz mail ve bağlantılara dikkat edilmelidir.

KAYNAKLAR

[1] CSRF