WCF - Güvenilir Oturumlar Nedir?

WCF - Reliable Sessions(Güvenilir Oturumlar) Nedir?

WCF (Windows Communication Foundation) ile geliştirilen servis yönelimli mimari(Service Oriented Architecture) uygulamalarında güvenilir oturumlar (Reliable Session) açılması için pek çok sebep vardır. 

Bunlardan biriside Replay Attack adı verilen saldırılardır. Bu saldırılarda istemci ve servis arasındaki mesajların, kötü niyetli kişiler tarafından yaklanması, değiştirilmesi, her hangibir zamanda n sayıda tekrar ettirirlerek orjinal servis konumuna yada başka bir lokasyona gönderilmesi söz konusudur. Bu tip saldırıların önüne geçmek için WCF mimarisi içerisinde güvenilir oturumların açılması gerekmektedir.

Güvenilir oturumlar(Reliable Sessions) sayesinde, istemci ve servis arasındaki mesajların daha güvenli bir şekilde taşınması sağlanabilir. Özellikle istemcinin birden fazla talepte bulunduğu durumlarda, servise gelen mesajların servise ulaştığı sıraya göre değilde istemciden gönderildiği sırada ele alınması adınada güvenilir oturumların verdiği bir garanti vardır. Bu garantinin sağlanmasında WS-ReliableMessaging(1) adı verilen OASIS tarafından kabul edilmiş Web Servisi şartnamesi(Specification) etkin rol oynamaktadır.

Güvenilir oturumlar , istemci ve servis arasında mesajlaşma trafiğinin güvenli bir şekilde sağlanabilmesinde rol oynamakla birlikte, beraberinde getirdiği bazı dezavantajlarda vardır. Bunlardan birincisi getirdiği ek mesaj trafiğidir. Nitekim burada hakiki istemci ve hakisi servis arasındaki mesajlaşmalarda birbirlerinin işlemlerinin kontrol edilmesinde görev alan onaylama gibi çeşitli mesajlarda hareket etmektedir. Diğer taraftan güvenilir oturumlar Replay Attack adı verilen saldırıları tamamıyla önleyememektedir, sadece azaltmaktadır. Bu ikinci dezavantaj olarak değerlendirilebilir. Buna neden olan senaryo ise şöyledir; "Güvenilir oturumlarda servisin, istemciden gelen mesajları gönderildiği sırada alabilmesi için mesaj başlıklarının numaralandırılması söz konusudur. Bu numaralar mesaj başlığında taşınır. Senaryo gereği istemcinin sırasıyla servise doğru 1 ve 2 numaralı mesajları göndermiş olduğu düşünülsün. 3nucü mesaj gönderildikten sonra, hacker tarafında yakalanmış içeriği değiştirilmiş ve mesaj numarası 7 olarak belirlenerek tekrardan servis tarafına gönderilmiş olsun. Bu arada servis, 7 numaralı mesajıda alıp buffer(2)"a atacaktır. İstemci ilerleyen zaman içerisinde orjinal 7 numaralı mesajı gönderdiğinde ise, 7 numaralı mesaj daha önceden hacker tarafından gönderilmiş olduğu için servis tarafından red edilecektir." İşte yalnızca güvenilir oturumlar oluşturularak Replay Attack" ların tam olarak önüne geçilememktedir. Burada çözüm olarak Custom Binding(3) tiplerinin kullanılması gerekmektedir. 

(1) - WS-ReliableMessaging, Web servislerine yönelik olarak geliştirilmiş platform bağımsız pek çok standarttan sadece bir tanesidir. Toplu olarak WS-* şeklinde ifade edilen tüm Web servisi standartları için http://en.wikipedia.org/wiki/List_of_Web_service_specifications adresinden bilgi alınabilir.

 (2) - Buffer sayesinde, istemciden değişik zamanlarda gelebilecek ama aynı güvenilir oturuma ait mesajların, istemciden gönderildikleri sırada çalıştırılmaları sağlanmaktadır. Bir başka deyişle, istemciden servise gelen mesajlar Host nesnesine işlenmek üzere gönderilmeden önce tamponda toplanır. Tüm mesajlaşma trafiği bittikten sonra ise tampondaki mesajlar sırayla servis uygulamadaki Host nesnesine işlenilmek üzere eklenilmektedir.

(3) - Söz konusu Custom Binding tipi sıfırdan yazılması gereken bir bağlayıcı değildir. Bunun yerine var olan çeşitli kanalların bir arada toplanarak oluşturulan komposit bir tiptir. 

Döküman Arama

Başlık :

Kapat