Cross Site Request Forgery nedir?

Nuri Yavuz
3 min readAug 13, 2019

--

Türkçe “Siteler Arası İstek Sahtekârlığı” olan CSRF zafiyeti; web uygulamasını kullanmakta olan kullanıcıların istekleri dışında işlemler yürütülmesidir. Uygulamaya giden isteklerin hangi kaynaktan ve nasıl gönderildiği kontrol edilmeyen sistemlerde ortaya çıkan bu zafiyet, aslında uygulamayı kodlayan yazılımcıların gözünden kaçan bir ayrıntıdır diyebiliriz.

Bunu bir örnekle açıklayalım,örnek için index.php,form.php,db.php ve saldırgan.html dosyalarımı hazırladım,hazırladıklarım aşağıda görülmektedir.

Kırmızı kesik çizgi içerisindekiler sonradan eklenmiş csrf açığını kapatmak içindir.

Aşağıdaki 4 görüntü kırmızı kesik çizgili kısımların olmadığı kısımdır.Yani CSRF zafiyetinin barındığı kısım.

Kodlardan anlaşılacağı üzerire veri tabanına okuma ve yazma istekleri için önce db.php dosyasında test1 adındaki veritabanına bağlantı gerçekleştirdik.

Daha sonra tarayıcıdan localhost/index.php yi görüntülediğimizde veritabanımızın id=1 olan satırının hakkinda sütunundaki değeri gösterecektir.yani normalbiri değerini ve ben buradaki değeri formu kullanarak değiştirebiliyorum burayakadar normal fakat form.php de herhangi bir doğrulama yapılmadığı için ajax metoduyla birisi veritabanındaki hakkinde değerini değiştirebilir.Yukarıdaki saldırgan.html i çalıştıralım ve görelim.

Çalıştırmadan önce:

saldırgan.html çalıştırıldıktan sonra sayfayı yeniliyoruz ve…;

Peki bunu engellemek için ne yapılmalı ?

En başta attığım kırmızı kesik çizgilerle gösterilen kısımlar eklenmeli,yani token kullanılmalı ve o token ile doğrulama yapılmalı.

Özetle tokenlar ile doğrulama yaptığımızda,saldırganın tokenı tahmin etmesi neredeyse imkansız olacağı için CSRF meydana gelmeyecektir.Aşağıda ise yukarıdaki kodun güvenli hali bulunmaktadır.

--

--

Nuri Yavuz
Nuri Yavuz

Written by Nuri Yavuz

“No effect is before the cause” in the same time “Cause doesn’t necessarily come before effect”

No responses yet