Forum
bir web projem var ve yayınlamadan önce gerekli güvenlik tedbirlerini almaya çalışıyorum. Html Encode u biliyorum, ama aklıma takılan birkaç nokta var.
1. html encode u biliyorum ama url encode un karakter kodlama dışında xss saldırılarını engellemek için nerede ve nasıl kullanmam gerektiği konusu.
2. microsoft anti xss frameworkünde yeralan htmlEncode fonksiyonunu aşarak (ingilizce makalelerin bazılarında tartışılıyordu) xss saldırısını bir karakterin hexadecimal kodlama ile yapabilecekleri... hexedecimal kodlama ile yapılabilecek hexedecimal saldırısınndan microsoft anti xss framework ile korunabilir miyiz ?
3. bazen de encode işe yaramıyor örneğin <a href:" html.encode(alert(merhaba)); " >Link</a> çalışıyor. Temelden bir çözüm yok mu acaba 🙁
ilgi gösterenlere teşekkür ederim.
merhaba,
sorunuzu kilitlediğiniz için düzenlemek zorunda kaldık. Öncelikle bu linkin çalışması yada çalışmaması onemli değil alert basmıs basmamıs cok onemlı degıl eger sız mvc de ValidateAntiForgeryToken kullanırsanız modelınız post oldugunda o form ıcınden anlık tokenı ıster bunu da ancak sızın sunucunuz generate edebılır yanı muhtemelen soruyu tam anlamamıs da olabılırım istediğiniz tam olarak html kod içinden post edilememesi ise controller da ValidateAntiForgeryToken yeterli olacaktır faz 1 olarak .
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
selam,
esasında sorduğum soru, xss ataklarından korunmak için urlencode fonksiyonunun neden kullanılması gerektiği.
bilirsiniz bu atak saldırıları iyi niyet ile sağlanılan girdilerin (text, dosya yükleme yolu ile dosya ismi, haber başlığı, url bar ile gönderilen arama metnine yazılan scrip girdilerinin) bir zarara yol açma potansiyelinden kaynaklanıyor.
bir kişi örneğin bir makale yazarak bir script gönderdi. bunu html encode ile çevirdiniz (mvc ye bırakmadınız çünkü rich text i kayıt etmek için raw html verisi gerekiyor) dolayısı ile girdiyi olduğu gibi database e kayıt etmek istiyorsunuz olası senaryoda.
1. sorum < > ' gibi karakterler htmlencode ile çevrildi. ingilizce bazı makalelerde htmlencode kullanılmadan regex ile güvenilen karakterlerin elenmesine geçildiği, fakat bu sonucun saldırganın < > ' gibi karakterlerin hexadecimal karşılığı ile bu denetimi aşabildiğine dikkat çekiliyor. sözde hexadecimal karşılığı yazıldığında da script karakterleri bilgisayar tarafından çalıştırıldığına dikkat çekilmiş haberde.
HtmlEncode'da da salgırgan bu karakterlerin hexadecimal karşılığını girerse microsoft un sytem.web.antixss (namespace tam hatrımda değil) isim uzayında olan htmlencode bizi yüz üstü bırakır mı yoksa hexadecimal karakterlerin filtrelemesinde ve convert edilmesinde yetenekli midir ? İlk sorum bu idi 🙂
2. sorum, html encode yapsanız bile, javasciript:alert("merhaba") gibi kodlar a href:" javascript:alert("merhaba"); " içinde çalışıyor olması. html encode burada bir işe yaramıyor. simgesel karakterler yok ki. a-z 0-9 karakterlere dokunmuyor bile. siz bir kişiye eğer twitter kullanıyorsanız lütfen linki veriniz, dediğinizde kişi www.twitter.com/birkisiadresi gibi bir link yerine javascript:.............. yazarsa
Kullanıcının twitter adresi: <a href:"javascript:.........">Twitter Adresi</a> linkinde bu kod çalışacak... Bu tehlikeden nasıl kurtulunur? MVC de validate i kapatıp raw html aldığınızı düşünün. bu ikinci sorum idi 🙂
3.sü bir de htmlEncode u xss senaryolarında nasık kullanıldığını anlatıyorlar. ama urlEncode un xss i engelleme konusunda (benim bildiğim unicode karakterlerin bütünlüğünü korumak nedeni ile tasarlanmış) xss saldırısını nasıl engelliyor ve nerede kullanıldığında işe yarıyor ? bu üçüncü sorum idi 🙂
belki terminolojik eksiğim var ise affola...
teşekkür ederim bir önceki cevabınızdan dolayı.
Merhaba
System.Web.Security.AntiXss.AntiXssEncoder sınıfını incelediniz mi ?
https://msdn.microsoft.com/tr-tr/library/system.web.security.antixss.antixssencoder(v=vs.110).aspx
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
Erdem beyin tavsiyesine ek olarak, aşağıdaki kaynakları incelemeniz konuyu daha iyi anlamanızı sağlayacaktır;
Preventing XSS Attacks in ASP.NET MVC using ValidateInput and AllowHTML
Preventing Cross Site Scripting Attacks in ASP.NET MVC 4
Using AntiXss As The Default Encoder For ASP.NET