session fixation

3 years ago 126
BOOK THIS SPACE FOR AD
ARTICLE AD

emre koseoglu

Selamlar,

Sessionlar ile doğrudan ilişkili olan session fixation sorununu konuşalım… Session Fixation sorununu anlayabilmek için öncelikle “session nedir?” sorusunu özetle açmamız gerektiğini düşünüyorum.

Sessionlar, cookieler gibi kullanıcı bilgilerinin tutulduğu bölümlerdir. Şu an session ile cookie arasındaki farkı düşündüğünüzü biliyorum, açalım… Sessionlar, cookieler gibi istemci taraflı tutulmaz, sunucu tarafında tutulurlar, güvenlik açısından cookielerden ayıran en önemli özellik budur. Böylece daha güvenilir olduğu düşünülür. Cookielere göre sürekli olarak tanımlı kalmazlar, kalmamaları gerekmektedir. Kullanıcı oturumu sonlandırdığında veya sayfayı kapattığında geliştiricinin mutlaka bir çıkış yazması gerekmektedir. Sessionlar buna bağlı olarak temizlenmelidir.

Birazda “sessionlar nasıl çalışıyor?” sorusunu özetle açalım…

Uygulamanın koştuğu sunucudan bir sayfa talep edildiğinde .NET özelinde konuşuyorsak asp.net work processor bu istemci için bir tanımlama değeri oluşturur, belli bir algoritma ile sunucu üzerinde oluşan değer istemciye asp.net_SessionId olarak iletilir. Bu noktadan sonra artık sunucu tarafında bu kimlik ile işlem görmeye başlayan işlemci sunucu tarafında yaşamı sonlanana kadar işlem görmeye devam edebilir.

Session Fixation sorunu bu özet içerisinde nerede başlıyor diyorsanız… Hemen açıklığa kavuşturalım. Üretilen bu eşsiz değer, kullanıcıya kimlik olarak verildikten sonra uygulama içerisinde yetkili işlemleri görmeye yarıyor… buraya kadar her şey tamam… Pekii bu değer yetkilendirildikten, örneğin; bir oturum işlemi sonrasında değiştiriliyor mu? Değiştirilmediğini düşünerek devam ediyoruz…

Adımda, X değeri ile oturum açma işlemini gerçekleştireceğiniz modüle geldiniz…Adımda, X değeri ile oturum işlemi başlattınız ve artık X değeri oturum sonrasında da kullanılan yetkili bir kimlik olmuş oldu.Adımda oturum sonlanması gereken durumlarda değerin yaşamını sonlandırmadığını varsayarsak….

Bu senaryoda 2. Adımda sorunu açık bir şekilde görebilmekteyiz. Ben “ X “ değeri oluşturarak (teknoloji nimetlerindende faydalanarak :) ) bu değeri bir şekilde karşımdaki kullanıcıya gönderip yetkilendirirsem, bu değeri kullanarak artık sunucuya kendimi yetkili olarak gösterebilirim. İşte bu hikayeye session fixation diyoruz…

Hadi pratik yapalım. Karanlık kalan kısımlarıda pratikte aydınlatacağız.

Adım kullanıcı yetki almak için bir giriş işlemi gerçekleştirecek.

Kullanıcı Kimlik Doğrulama Modülü — 1

Bu noktada arkaplanda oluşturduğumuz session değerine baktığımız zaman,

Kimlik Doğrulama Öncesi Session Değeri — 2

Kimlik doğrulamasından önceki session değerini görmekteyiz. Bu noktada kullanıcı kimlik doğrulama işlemini yapıp, bu session değerini yetkilendirmesini bekleyeceğiz.

Kimlik Doğrulama Sonrası Yönetici Paneli — 3

Doğrulaması sonrası değere tekrar dönüp baktığımız zaman,

Kimlik Doğrulama Sonrası Session Değeri — 4

Oturum değerinin hala aynı olduğunu ve değişmediğini görmekteyiz.

Bu durumdan çıkan sonuç, bize dışarıda suni olarak atanan bir değeri yetkilendirdiğimizde bu değere sahip olan 2. kişi bu değer sayesinde uygulamaya kendisini yetkili olarak gösterebilecek olmasıdır.

Bu gibi oturum ve yetkilendirme işlemleri sonrası oturum değerinin değişmesi gerekmektedir. Oturum sonlandırıldığında, kullanıcı ile uygulama arasında ilişki kalmadığında ise bu değerlerin temizlenmesi gerekmektedir.

bir sonraki yazıda görüşmek üzere…

Read Entire Article