Ana Sayfa
Ana Sayfa Forumlar Dosyalar Dersler iletisim
 
   Kategoriler
ACPI [0]
Action Script [5]
Ajax [7]
ASP [12]
ASP.NET [23]
Assembly [3]
Bash [1]
C [4]
C# [9]
C++ [10]
Cobol [1]
Delphi [31]
Flash [5]
Html [9]
JAVA [36]
Java Script [12]
JSF [2]
Jsp [6]
Lua [1]
Matlab [2]
MySQL [30]
Oracle [1]
Pascal [31]
Perl [4]
Photoshop [2]
PHP [156]
Python [8]
REXX [6]
Ruby [1]
SEO [5]
Visual Basic [37]
C# / Bilgi Sızdırma ve Uygunsuz Hata Yönetimi
Bilgi Sızdırma ve Uygunsuz Hata Yönetimi
Yazar: by_Coder
Eklenme: 25/01/08    Okunma: 405    
 
 

Kullanıcı Adı ve Parola kontrolü yapılan sistemlerde “Kullanıcı adınız yanlış” yada “Parolanız yanlış” gibi uyarı mesajlarının verilmesi bilgi sızdırma’ya örnektir. Saldırgan deneme yanılma yöntemi ile giriş yapmayı deneyebilir. “Parolanız yanlış” mesajı ile karşılaşınca da girdiği kullanıcı adının sistemde var olduğunu anlar ve deneme yanılma işlemlerinde içeriye girme şansı %50 artmış olur.


Bir örnek daha vererek “Bilgi Sızdırma” konusunu pekiştirelim.


Bir e-ticaret uygulamasının sahibi ürün stok bilgilerinin rekabet açısından gizli tutulmasını isteyebilir. Bu gibi durumlarda kullanıcının sipariş miktarı stoktaki ile karşılaştırılıp. “Sipariş etmek istediğiniz miktar stoklarımızda bulunmuyor” mesajı verirseniz kullanıcı yada rakip firmalar stok miktarlarınız hakkında bilgi edinmiş olur. Bu örnek web uygulamanız için bir tehlike arzetmez ama ticari bir bilginin dışarı sızmasına sebep olur.


Uygunsuz Hata Yönetimi’nde ise web uygulamanızda oluşan hatanın olduğu gibi ziyaretçiye gösterilmesidir.


Hata halinde verilen bilgiler geliştiriciye yöneliktir. Yazılım geliştiricisinin hatanın hangi sebepten kaynaklandığı hakkında bilgi verir. Bu yüzden hata anında meydana gelen bilginin ziyaretçiye gösterilmemesi gerekir.


Hata mesajlarından bir web uygulamasının nasıl bilgi sızdırabileceğini inceleyelim.


http://www.fabrikam.com/Vendor.aspx?CityID=1


Şeklinde çağrılan bir sayfada bayiler listesini çalıştıran SQL cümleciği şöyle oluşturulmış olsun : 


"Select Name,Phone From Vendor Where CityID = " & Request.QueryString("CityID")

SQL Intection yöntemi ile içeri SQL kodu sızdırıyoruz ve olacakları inceleyelim.

http://www.fabrikam.com/Vendor.aspx?CityID= 1 UNION ALL Select FooColumn From FooTable


Yukarıdaki linki yazdığımızda oluşacak SQL cümlesini inceleyelim. 


Select Name,Phone From Vendor Where CityID = 1
UNION ALL
Select FooColumn From FooTable

Pek mantılı bir sorgu olmadı. Dönen hata mesajını inceleyelim.


Invalid object name 'FooTable'


Demekki sistemde FooTable diye bir tablo yokmuş.

Bu işe yaramayan bir bilgi gibi gözükebilir ama unutmayın ki Edison ampülü bulmak için 1000 den fazla deney yapmıştı.


Saldırgan, deneme yanılma yöntemi ile Users isimli kullanıcı bilgilerinin bulunduğu tablo ismini buldu diyelim. Peki tablo ismini doğru tahmin ettiğini nasıl anlayacak ? Tabii ki hata mesajından.


URL

http://www.fabrikam.com/Vendor.aspx?CityID= 1 UNION ALL Select FooColumn From Users


SQL Cümlesi 


Select Name,Phone From Vendor Where CityID = 1
UNION ALL
Select FooColumn From User

Hata Mesajı

Invalid column name 'FooColumn'


Hata Mesajı değişti. Artık tablo isminin değli kolon isminin yanlış olduğunu söylüyor. Demekki tablo ismini doğru tahmin etmişiz.


UNION ifadesini biraz açalım. Farklı iki tablodan gelen değerleri tek sonuç setinde geri döndürmeye yarayan bir SQL ifadesidir. Yalnız her iki Select ifadesinin de eşit sayıda ve aynı tipte değerler döndürmesi gerekir.


Select ifadelerinde kullanılan kolon sayıları farklı ise şöyle bir hata mesajı alabiliriz.


All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.


Bu seferde QueryString ile verdiğiniz Select ifadesindeki kolon isimlerini artrırmak gerekir.


http://www.fabrikam.com/Vendor.aspx?CityID= 1 UNION ALL Select FooColumn,FooColumn2 From FooTable


Bundan sonra yine deneme yanılma yöntemi ile User tablosundaki kolon isimlerini tahmin etmeye kalıyor.


Fazla uzatmadan sonuca gidelim :


URL

http://www.fabrikam.com/Vendor.aspx?CityID= 1 UNION ALL Select Username,Password From Users


SQL cümlesi


Select Name,Phone From Vendor Where CityID = 1
UNION ALL
Select Username,Password From User

 Sonuç olarak Vendor.aspx te görüntülenen bayi listenin altında kullancıların username ve password bilgileride listeleniyo olacak.


Bu yüzdendir ki uygulamalarımızda oluşan hata mesajlarını ziyaretçilerimize göstermemeliyiz.


 



Aslında bu konuda ASP.NET geliştiricileri oldukça şanslı. Hata oluşabilecek kod kısımlarında try-catch mekanizmasını kullanabilirler, hata meydana geldiğinde ziyaretçiye sevimsiz hata ekranları yerine “Şu an sistemimizde bir hata oluştu” sayfasına yönlendirebilirler, uygulamanın neresinde olursa olsun oluşan hata loglayabilirler.


Hatanın meydana gelebileceği olası kod bloklarını try-catch blogu içine alınız. Bu veritabanında yapılan bir işlem yada mail gönderen bir kod bloğu olabilir. 


try
{
    // yapılacak işlemler
}
catch(Exception ex)
{
    // hata anında yapılacaklar
    // ex.Message ile hata ile ilgili bilgiye ulaşabilirsiniz.
    // hata mesajını bir dosyaya keydedebilir
    // yada mail atabilirsiniz.

}

Windows kullanıcıların kabusu “Mavi Ekran”ın psikolojimiz üzerinde etkisini düşünün. Aynı şekilde ziyaretçilerinizde abuk sabuk teknik terimlerin bulunduğu kırmızı ve büyük puntolu hata sayflarından pek hoşlanmazlar. Bu siteniz için hem bir prestij kaybıdır hemde ziyaretçinizi kaybetme tehlikesinide beraberinde getirir.


Her ne kadar try-catch kod bloğunu kullansakta tahmin edemediğimiz bir yerde oluşabilecek bir hata oluştuğunda kullanıcıyı sevimli bir hata sayfasına yönlendirmek için web.config te ufak bir değişiklik yapmamız kafi.   





Taglar: Bilgi Sizdirma ve Uygunsuz Hata Yonetimi Csharp ile Windows Programlama 4 - Pencrele Ozellikleri Csharp ile Windows Programlama 5 - Pencrele Ozellikleri Csharp Ile Windows Programlama 1 Csharp Ile Windows Programlama 2 - Window Classes Csharp Ile Windows Programlama 3 - Pencreler Dsofile ile Office Belgelerinin Ozelliklerini Duzenlemek Injection Flaws Kotu Niyetli Dosya Calistirma

Isminiz:
E-mail adresiniz:
Güvenlik Kodu:
  
 

 

   Görsel Dersler
Asp [59]
Asp.Net [5]
Csharp [33]
Delphi [85]
Delphi 7 [0]
Dreamweaver [45]
DW ile ASP Uygulamaları [28]
English Lessons [52]
Fireworks [4]
Flash [16]
HTML [20]
Java Script [0]
MS Access [19]
MS FrontPage [11]
Photoshop [32]
PHP [99]
Python [3]
SolidWorks [25]
Think Design [26]
VB Script [32]
Vb.Net [37]
Visual Basic [4]
   Giriş Yap
Kullanici Adi

Sifre

Üye Ol
   Dosyalar
WestByte SeaWar
Google Talk
Graphic Converter 2003
ShowImg
Zen Puzzle Garden
Maxthon (MyIE2) Türkçe Yama
Awicons Standart
AKINSOFT Kurs Otomasyonu
AKINSOFT AsPing
DVD Santa
   Duyurular
Duyuru1
Duyuru2
   Haberler
Haber1
Haber2
Ana Sayfa Php Nuke Resmi Web Sitesi
Php Nuke Tema Tasarim Sitesi Php Nuke Tema Tasarim Sitesi
Ana Sayfa Forumlar Dosyalar Hesabiniz iletisim
Tema Tasarim : Halil Ibrahim Kalkan webmaster forumu Web Stats