Asp ile DataBase (DB) 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:\\inetpub\\wwwroot\\turksecurit ymaster.com

Alt Dizin:
C:\\inetpub\\wwwroot\\turksecurit ymaster.com\\resimler
C:\\inetpub\\wwwroot\\turksecurit ymaster.com\\01.08.2005resimler
C:\\inetpub\\wwwroot\\turksecurit ymaster.com\\data

Dosyalar:

Klasör; C:\\inetpub\\wwwroot\\turksecurit ymaster.com\\resimler
'''''''''''''''''''''''''''''' '''''''''''''''''''''''''''
[ Resimlerimizin Bulanacağı Klasör ]

Klasör; C:\\inetpub\\wwwroot\\turksecurit ymaster.com\\01.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:\\inetpub\\wwwroot\\turksecurit ymaster.com\\data
'''''''''''''''''''''''''''''' '''''''''''''''''''''''
Kayitlar.mdb -> Bom Boş Olan Database'imiz.


Klasör; C:\\inetpub\\wwwroot\\turksecurit ymaster.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.2005resi mler/resim_002.jpg")
set bag = Server.CreateObject("ADODB.Con nection")
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.rec ordset")
Kay.Open S_sql, Bag, 1,3
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write "
Adi Soyadi Yasi
" & Kay("adi") & " " & Kay("Soyadi") & " " & Kay("Yas") & "
"
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İŞ ########
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.