Asp Dili ile DataBase Güvenliği

Asp ile DataBase Güvenliği 1.ADG Giriş 2.Asp Ile DataBase Güvenliği 3.Örnek Bir Uygulama 4.ADG Çıkış [1.ADG Giriş] """"""""""""" ------------------------------------------------------------------------------------------------- ADG, "Asp ile DataBase Güvenliği" Kelimelerinin Başharflerinden Oluşur Asp ile Database Güvenliği, Yazmış Olduğunuz Scriptinizde Dinamik/Sabit Olarak Tutalacak Kayıtların,Saklanmış Olduğu Veri Deposunun Korunmasıdır. Bilginin Güvenliği, Bilginin Önemi Kadar Önemlidir.Eğer Databasede Saklanan Bilgilerin Biz im İçin Bir Önemi Yoksa,Bu Konu Okadarda Onem Teşkil Etmez.Ancak Bizim Üyelik Sistemimiz Varsa,Ve Üyelerimiz Varsa Bu Konu Hem Üyerimiz Hemde Bizim İçin Çok Büyük Bir Önem Taşımaktadır. Üyerimiz, Sitemize Üye Olduklarında Genel Anlamda Şifre Olarak,Unutmayacakları, Veya Kendi leri İçin Özel Anlam İfade Eden, Kelime veya Kelimeciklerden Oluşan Bir Şifre Oluşturacaklardır. Muhtemelen Bu Üyemizin Birçok Yerde ayni Şifreyi Kullandiği Kacinilmaz bir Gercektir. Bu Bilginin Kötü Niyetli birinin Eline Gecmesi Muhtamelen Kötü Sonucalr Doğuracaktr.Bu Olaya Sebebiyet Vermek Veya Adımızı Gecirmek, İlgili Kurum Veya Kuruluşumumuzu Kötü Etkiliyecektir. Zarar Gören Kişinin, Böyle bir Olayı Öğrenip Zarardan Dolayı Dava Acması Sonucunda Dava yı Kazanması Muhtameldr.Asp ile Database Kullanmak için Birçok Secimde Bulabiliriz.Ben Komuzda Genel Anlamda En çok Kullanılan Access, Sql Server, Dat Dosyaları Üzerine Olacaktır. Şimdi Daha Fazla Girişi Uzatmadan Konumuza Giriyoruz. [2.Asp Ve Database] (databaseler hakkında geniş bilgi databaseler bölümündedir) """"""""""""""""""" ------------------------------------------------------------------------------------------------- Asp ile Bir Access Bağlantısı Kurmamız İçin, Öncelikle Bir Konnektöre İhtiyacımız Vardır, Ben Burada Konnektör Olarak ODBC(Open Data Base Connectivity) Kullanacağım. Ve Bununla Access" e Bağlanacağım, Izlediğim Adımları Çıkış Bölümünde Tekrar Sıralı Şekilde Anlatmayı Düşünüyorum. DataBase"imde Tutacağım Bilgilerin Benim İçin Önemli Olduğunu Düşünerek Hemen Başlıyorum Paranormal Olmaya.. İlk Olarak Scriptimden Başlıyorum. Benim İçin En Önemli Şeyin DataBase"imin Sunucu Üzerindeki Yolunun Kesinlikle ve Kesinlikle Hiç Kimse Tarafından Bilinmemesi ! Bunun İçin Yapacağım Şeyleri Şimdi Sirasiyla Adımlamak Istıyorum; 1.Script İçin Hata Sayfası Oluşturmak 2.DataBase Konnektorumu Harici Bir Sayfadan Dahil Etmek. 3.DataBase Klasörümün Ismini Kimsenin Tahmin Edemiyeceği Bişi Yapmak. 4.Sayfama Gelen Tüm Bilgileri Analiz Etmek 5.DataBase"imin Uzantısını Jpg, Gif, Asp, Php Gibi Uzantılarda Yapmak. 6.DataBase"imin Bulundugu Klasor"e Birkac Alakasız Dosya Eklemek. 7.DataBase"ime Benzeyen Boşbir VeriTabanı Kullanmak [3.Örnek Bir Uygulama] """""""""""""""""""""" ------------------------------------------------------------------------------------------------- Sunucu İçin Dizin Yapısını Şu Şekilde Olduğunu Varsayarak İşlemlere Başlıyorum... Sunucu Yapısı: __________________________________________________________________________________ Ana Dizin: C:inetpubwwwroot urksecuritymaster.com Alt Dizin: C:inetpubwwwroot urksecuritymaster.com esimler C:inetpubwwwroot urksecuritymaster.com1.08.2005resimler C:inetpubwwwroot urksecuritymaster.comdata Dosyalar: Klasör; C:inetpubwwwroot urksecuritymaster.com esimler """"""""""""""""""""""""""""""""""""""""""""""""""""""""" [ Resimlerimizin Bulanacağı Klasör ] Klasör; C:inetpubwwwroot urksecuritymaster.com1.08.2005resimler """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" resim_001.jpg -> Fuzili Bulunduracağımız Resim resim_002.jpg -> Database"imiz. resim_003.jpg -> Fuzili Bulunduracağımız Resim II Klasör; C:inetpubwwwroot urksecuritymaster.comdata """"""""""""""""""""""""""""""""""""""""""""""""""""" Kayitlar.mdb -> Bom Boş Olan Database"imiz. Klasör; C:inetpubwwwroot urksecuritymaster.com """""""""""""""""""""""""""""""""""""""""""""""""" Konnektor.Asp -> DataBase"imize Baglanti Saglayacak Konnektor HataOlustu.Asp -> Hata Durumunda Yonlendirme Yapacağımız Sayfamız. Kayitlarim.Asp -> Baglanti Kurulup Bilginin Sunulacağı Dosyamız.. ___________________________________________________________________________________ Şimdi Bu Karışık Yapıyı Niye Kurduk Diyebilirsiniz, Demediyseniz Ben Hemen Açıklayım :=) Bu Yapıyı Kurma Sebebimiz Şudur, Olurya Sunucumuzda Bir Açık Çıkar/Bulunur, Ufak Bir Scriptle Sunucudaki Tüm DataBase"ler Taranır.Veya Tüm Klasörler Listelenir yada İçeriği Kontrol Edilir. İşte Böyle Olası bir Durumda, Bizim Database"îmiz Olarak, Kayitlar.mdb Dosyamız Karşı Tarafa Gösterilecektir. Şunki Genelde Uzantısına Göre Tarama Yapılır. Ayrıca Klasörlerimiz Arasındada Gezdiğin de 01.08.2005resimler Klasörümüz Hiç Dikkani Cekmeyecektir. Ceksede İceride Göreceği 3 Resim Resim Klasörü Olduğu Kanısına Vardırıp Onu Sunucudaki Diğer Dizinleri Gezmesine Sebebiyet Verecek :=) ASP: Dosya: Konnektor.Asp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ================================================================================================= Dim yol,bag On error resume next yol = server.mappath("01.08.2005resimler/resim_002.jpg") set bag = Server.CreateObject("ADODB.Connection") bag.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & yol if err.number 0 then Response.Redirect("HataOlustu.asp") end if %>================================================================================================= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Burada DataBase"imize Bağlantı Kuracak Olan Konnektor.ASP"yi Yazdik Ve Eğer Script Hatali Calışırsa,HataOlustu.ASP Sayfasına Yönlendirmesi Gerektiğini Belirttik. Burada Anlamınız Gereken En Önemli Husus, Ziyaretcinin Sistem Hakkında Hiçbir Bilgisinin Olmamasi Gerektiğidir.Eğer Kullanıcı Sistem Hakkında Bilgi Sahibi Olursa 1/0 Önde Başlar. Hata Raporları ve Kodlarıda Sabit Olduğu İçin Vereceği Hata Durumlarından Nerede Nasil Bir Yöntem Kullandiğinizi Öğrenir Ve Size Karşı bunu Kullanır... Şimdi HataOlustu.ASP"yi Yazalım. ASP: Dosya: HataOlustu.Asp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ================================================================================================= On error resume next response.write "Yapmış Olduğunuz Isteği Sunucumuz Şuanda Karşılayamamaktadır." response.write "Bu Aksaklıktan Dolayı Üzgünüz.Lütfen Daha Sonra Tekrar Deneyin." response.write "yonetici[at]turksecuritymaster.com Adresi Ilede Irtibat Kurabilirsiniz." if err.number 0 then Response.Redirect("HataOlustu.asp") end if %>================================================================================================= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Burada Hata Oluşması Durumda Yönlendirme Yapacağiz Dediğimiz, HataOlustu.Asp Dosyasını Yazdık. Bu Dosya Eğer Scriptlerimizde HataOluşursa Otomatik, Hata Kodu ne Olursa Olsun Hata Mesajı Olarak "Yapmış Olduğunuz Isteği Sunucumuz Şuanda Karşılayamamaktadır......" Yazısını Verecektir. Şimdi Kayıtların Listeleneceği Kayitlarim.Asp"eye Yazalım. :) ASP: Dosya: Kayitlarim.Asp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ================================================================================================= On Error Resume Next Dim KayitId KayitId = Request.QueryString("id") KayitId = Replace(KayitId,""","/") KayitId = Replace(KayitId," S_sql = "SELECT * FROM kayitlar where id like "" & KayitId & """ Set Kay = Server.CreateObject("Adodb.recordset") Kay.Open S_sql, Bag, 1,3 Response.Write " " Response.Write " " Response.Write " Adi " Response.Write " Soyadi" Response.Write " Yasi" Response.Write " " & Kay("adi") & "" Response.Write " " & Kay("Soyadi") & "" Response.Write " " & Kay("Yas") & "" Response.Write "" Kay.Close Bag.Close if err.number 0 then Response.Redirect("HataOlustu.asp") end if %>================================================================================================= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Burada Kayıtlarımızı Listeleyecek Olan Kayitlarim.Asp"yi Yazdık.Burada Dikkat Etmeniz Gereken En Önemli Noktalardan Biride,Dışarıdan(KULLANICIDAN) Gelen Bir Verinin Sql Sorgusuna Dahil Edildiğidir. Ve Bu Verinin , Kullanıcıdan Geldikten Sonra Sql Sorgusuna Dahil Edimeden Taramadan Geçtiğidir. Bu Veriyi Taramadan Gecmemizin Nedeni Ise, Sql Injection, Xss Vs. Gibi Atak Türlerinin Engellenmesidir.Yine Aynı Şekilde Diğer Sayfalarda Yaptığımız Gibi Bu Sayfamızdada Hata Oluşması Durumunda Yapılacak İşleminin, Hataolustu.Asp Sayfasına Yonlenmek Oldugu Bildirildi. Bu Gerekli Kaydın Bulunamaması, DataBase"in Meşkul Olması, Scripte Bir Hata Oluşmasından Sonraki Yapılacak İşlemdir.Ben Burada Database"imizde Kayitlar Tablosu Olduğunu Ve Bu Tablo İcerisindede Şu Şekilde Olduğunu Varsaydım..Ve Ayrıca Konnektorun Dışarıdan Sayfaya Dahil Edildiğinede Dikkat Edin. Adi, Soyadi, Yas ---------------- TABLO: ################################################ ID | Adi | Soyadi | Yas """"""""""""""""""""""""""""""""""""""""""""""" 1 | IBRAHIM | BALIÇ | 20 2 | BURAK | GIRAY | 22 3 | RAŞIT | YUKLU | 21 ... .. . ################################################ [3.ADG Çıkış] """""""""""""""""""""" ------------------------------------------------------------------------------------------------- Burada Kücük Bir Örnekle Bir DataBase Bağlantısının Nasıl Olması Gerektiğine Göz Attmış Olduk. Burada Aslen En Önemli Hususlardan Biride, Scripttir. Fakat Örneğimizde Görmüş Olduğunuz Gibi Gelen/Kontrol/Sorgu Şeklinde ve Hata Durumda Özel Sayfa Yönlenmesini Yaparsanız,Scripte Tam Anlamıyla Güvenliği Sağlamış Olursunuz... Sql Injection, Xss vb. Atak Türlerinden Daha Iyı Korunmak İçin, TSM"nin Ücresiz Olarak Yayimladiği Atak Engeli"ni Sunucunuzda Kullanabilirsiniz. Veya Scriptlerinizde Giriş/Çıkış larda Alttaki Yolu Izleyebilirsiniz. GIRIŞ[INPUT] -------------> ↓ ______ ______ ______ | G. | | V. | | D. | | Veri | ------ > | Tara | ----- > | Base | ------> ↓ |______| |______| |______| ↓ ↓ ↓ ÇIKIŞ[OUTPUT] <--------<-------------<--------------------<--- ================================================================================================= ######## BİTİŞ ########

Döküman Arama

Başlık :

Kapat