Ders 27 - Concurrency > Thread Safety Problems
Concurrency(Eşzamanlılık) ünitesinin ilk dersi olan Thread Safety Problems(İş Parçacığı Güvenlik Problemleri) dersinde thread safety kavramından bahsedilecektir.

Dersin Hedefi

Kullanıcı web uygulmasındaki eşzamanlılık sorununu exploit edebilmeli, yani istismar edebilmeli ve kendi login bilgilerini görecekken aynı anda aynı fonksiyonu kullanan başka kullanıcının bilgilerini görebilmelidir.

Açıklamalar

Web uygulamaları birden fazla HTTP taleplerini eşzamanlı olarak işleyebilirler. Geliştiriciler geliştirdikleri web uygulamalarında sıklıkla thread safe olmayan değişkenler kullanırlar. Bir class'ın thread safe olması demek eşzamanlı gerçekleşen http taleplerinin sorunsuzca halledilmesi demektir. Yani thread safe'in olmadığı bir sınıfta aynı anda kullanılan sınıf değişkenini ilk thread nasıl görüyorsa diğer thread'ler de o şekilde görür. Buradaki thread'lerin her birini http talebi olarak düşünmelisiniz. Siz bir web tarayıcısı ile bir sunucudan sayfa talep ettiğinizde bu bir thread'e tekabül eder. Farklı bir tarayıcı penceresinden aynı siteyi talep ederseniz bu ikinci thread'e tekabül eder. Bu thread'leri alan sunucu ise bunları işleme sokar ve sonuç döndürür. Sorun şu ki eğer web uygulaması thread safe değilse eşzamanlı gelen thread'lerden biri diğerinin kopyası sonuç alacaktır. Yani sanki her thread kendi stack'ine sahip değilmiş gibi davranacaktır ve ilk thread, değişkenleri nasıl görüyorsa diğer thread'ler de aynı şekilde görecektir. Bunu kafanızda canlandırabilmek için sınıfın içerisinde static bir değişkenin kullanıldığını varsayın. Ne kadar farklı thread gelirse gelsin static değişken aynı değerini koruyacaktır. Böylece kullanıcıya ikinci thread için farklı içerikli sayfa gelmesi gerekirken aynı içerikli sayfa gelecektir. thread safe kullanılarak bir thread'in başka thread'lere karışması ve değerlerini modifiye etmesi riski paylaşımlı veriye koordineli erişim ile engellenir.

Dersin Çözümü

Öncelikle dersin konusu eşzamanlılık olduğu için ders ekranını görüntüleyen tarayıcı ile beraber yeni bir pencere daha açalım. Bunun için ders ekranını görüntüleyen tarayıcı penceresini ekrana getirin ve CTRL+N tuş kombinasyonunu kullanın. Böylece yeni bir tarayıcı penceresi açmış olursunuz. Ardından ders ekranını görüntüleyen tarayıcıdaki url'yi kopyalayın ve yeni açtığınız tarayıcıya yapıştırın ve enter'layın. Artık bu dersin eşzamanlılıkla alakalı bug'ını, yani hatasını exploit etmek için - sömürmek için - hazırsınız.

Ders bize iki tane kullanıcı adı sunmaktadır. Birincisi dave ve ikincisi ise jeff 'tir. Bu kullanıcı adlarından birini ilk tarayıcının sunduğu ders ekranındaki metin kutusuna, diğerini ise yeni açtığınız tarayıcının sunduğu ders ekranındaki metin kutusuna giriniz.





Ardından ders ekranında bulunan Submit butonuna her iki tarayıcı için seri(hızlı) bir şekilde basın. Ekrana gelen kullanıcı bilgileri göreceğiniz üzere her iki tarayıcıda da aynı olacaktır. Hem de diğer pencereden farklı kullanıcı adı girilmiş olmasına rağmen...





Sonuç
Eğer geliştirilen web uygulamaları thread safe olmazsa bu derste olduğu gibi bir kullanıcı bir başka kullanıcının bilgilerine eşzamanlılığı tutturduğu takdirde erişebilir. Yani kullanıcı kendi hesabına girmeyi beklerken bir de bakmış, bir başkasının hesabına girmiş. Bu durum tahmin edebileceğiniz gibi hiç de hoş olmaz. :)



Yararlanılan Kaynaklar:

Bu yazı 11.09.2015 tarihinde, saat 05:59:12'de yazılmıştır. 23.09.2015 tarihi ve 17:09:24 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 780
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :