Giris

$mesaj

Üye Adi Sifre
| Üye ol

Online Sayisi : 34 Toplam Üye Sayisi : 1581 Son Üye : OrhanKızılkan

Tarih 2008:Nov:Fri

Kategoriler
  • ACPI [0]

  • Action Script [5]

  • Ajax [7]

  • ASP [17]

  • ASP.NET [23]

  • Assembly [3]

  • Bash [1]

  • C [6]

  • C# [9]

  • C++ [12]

  • Cobol [1]

  • Css [20]

  • Delphi [31]

  • Flash [5]

  • Html [9]

  • JAVA [36]

  • Java Script [17]

  • JSF [2]

  • Jsp [6]

  • Lua [1]

  • Matlab [2]

  • MySQL [31]

  • Oracle [1]

  • Pascal [31]

  • Pear [3]

  • Perl [22]

  • Photoshop [2]

  • PHP [169]

  • Python [9]

  • REXX [6]

  • Ruby [4]

  • 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: 607    
     
     

    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.   





    Bu Kategoriye Ait Diğer Makaleler
    Başlık Tarih Hit
    Csharp ile Windows Programlama (5) - Pencrele Özellikleri 25/01/08 1389
    Csharp ile Windows Programlama (4) - Pencrele Özellikleri 25/01/08 814
    Csharp İle Windows Programlama (3) - Pencreler 25/01/08 768
    Csharp İle Windows Programlama (2) - Window Classes 25/01/08 1053
    Csharp İle Windows Programlama (1) 25/01/08 1559
    Dsofile ile Office Belgelerinin Özelliklerini Düzenlemek 25/01/08 460
    Injection Flaws 25/01/08 392
    Kötü Niyetli Dosya Çalıştırma 25/01/08 747
    Bilgi Sızdırma ve Uygunsuz Hata Yönetimi 25/01/08 608

    Misafir - 2008-08-05 14:52:56
    tşk


    electro71 - 2008-08-10 01:00:02
    tşk


    Misafir - 2008-08-07 19:42:32
    tşkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

    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]

  • iletisim    Reklam Verin Kadromuz Tavsiye Edin Site Haritasi Etiketler

    Sesli Chat beceri oyunlari

    Sitenizi Ekleyin.

    Sitemize Hosgeldiniz Sitemiz Genç Nesil Programlama Kaynak Sitesi Olup Siz Degerli Misafirlerimize Yararlanmaniz Amaci Ile Kurulmustur.



     

    Her hakki saklidir 2008 Tema : Pd - Ramazan
    Ferdi KÜÇÜK Web Stats webmaster forumu