Security Expert Network Editor Login | Register Ekle

root > Veritabanı Güvenliği > MS Access
Asp Uygulamalarında Access Veritabanı Güvenliği - MS Access - Veritabanı Güvenliği - root \ Cyber-Security
ErkanKESKİN
(Date : 24.03.2011 02:57:57)


Asp Uygulamalarında Access Veritabanı Güvenliği

Merhaba Arkadaşlar.

Bu makalede Asp (Active Server Page) kullanarak yazılım yaparken kullanılan access veritabanının güvenliğini sağlamanın yolları ve küçük ipuçlarını inceleyeceğiz.

Bilindiği gibi Asp"de Microsoft"un ürünüdür access"te. Bu nedenle oldukça uyumlu ve performanslı çalışırlar. Tabiki Access veritabanı küçük uygulamalarda kullanılır. Ufak tefek ürün tanıtım scriptleri ve kurumsal web sitelerinde rahatlıkla kullanılabilir. Orta çaplı uygulamalardada kullanılır fakat tavsiyemiz tabiki ondan daha ileri bir teknoloji olan ve daha advanced bi yapı olan Mssql kullanmanız. Access kullanırken kayıt sayısı arttıkça performans düşer. Mssql"de ise performans sadece kayıt sayısına bağlı değildir. Performansı arttırmak için daha etkili yollar ve toollar vardır mssql"de.

Şimdi Access veritabanı hakkında fikir sahibi olduk. Eğer yabancısı değilsek bildiklerimizi pekiştirdik ve mssql hakkında da biraz bilgi sahibi olduk. Konumuz tabiki access veritabanı güvenliği. Bu ön bilgiden sonra Access veritabanında güvenliği sağlamak için bazı ipuçlarına değinelim. Tabiki %100 güvenliği sağlamak pek mümkün değildir fakat biz minimuma indirgemeye çalışacağız. Güvenliği sağlama hususunu ana başlıklarda toplamamız gerekirse şunları yazabiliriz ;

Path Gizleme Db Şifreleme QueryString Kontrolü Random Name

Bu başlıklar fazlası ile yeterli olacaktır. Hele son maddemiz öyle bir yöntem ki, fazla kişinin bildiğini sanmıyorum, diğer 3 maddeye gerek bırakmayacak denli kuvvetli bir çözümdür. Şimdi sırasıyla inceleyelim.

Path Gizleme

Eskiden Şöyle bir yöntem vardı ;

WebWiz Forum uygulaması kullanan bazı amatör kişiler veritabanı yolunu default olarak bırakırdı. Kendini hacker diye nitelendiren kişi ise o default yolu browser"ın adres çubuğuna yazardı ve Hop ! Db bilgisayarında. Gerçi artık bir çok hosting firması sunucu üzerinde bu gibi işlemleri, yani browser"a mdb yolu yazılmasını yasakladı. Ama yinede her firmada böyle bir uygulama olmadığından bu önlemi almakta fayda var. Eğer hazır script kullanıyorsanız veritabanı klasörünü mutlaka değiştirin. Kendi yazdığınız scriptde olsa hazırda olsa Veritabanı klasörünü ve adını sizin bile hatırlayamayacağınız, ancak ve ancak yazmış olduğunuz scriptin tanıyabileceği bir hale getirin. Örneğin ;

45hgkhjuyii56asoyd.mdb gibi.

Db Şifreleme

Bu yöntem ise Access Programının özelliğidir. Araçlar menüsünden veritabanını şifreleyerek kötü niyetli kişilerin eline geçtiği takdirde elinde patlamasını sağlayabilirsiniz.

QueryString Kontrolü

Bu yöntemde şudur ki ;

Çoğu zaman projelerimizde veritabanı bağlantı kodları, değişken tanımlamaları, fonksiyonlarımız, classlar vs. herbiri ayrı sayfalarda tutulur ve include yöntemi ile anasayfaya monte edilir. Bu şekilde yapılınca herhangi bir değişiklik veya hataya kolayca ve hızlı bir şekilde müdahale edebilme imkanına sahib oluruz. Aynı zamanda kodlarımız derli toplu olur ve her zaman anlaşılır ve güzel kod yazarız. Kısacası temiz iş ! Bunu yaparkende include sayfalarımızı bir klasörde toplarız örneğin ; Icerikler isimli bir klasörde toplarız ve buradan include ederiz anasayfamıza. Yani Include sayfalarımız dizinimizde bir arada toplu halde bulunur. Buda temiz iş ! Fakat eğer biz adres çubuğuna Icerikler klasörü üzerinden atıyorum ; dbbaglanti.asp
( db bağlantı kodlarımız bu sayfada varsayalım ) yazılmasını kontrol edip engellemez isek ;

Veritabanı path yanlış çıktı vereceğinden programımız hataya maruz kalacaktır. O nedenle Sql Injection Attack uygulanabilir hale gelebilir. Bu şekilde kontrolümüzü yaparsak Saldırgan bu yöntemden de ümidini kesecektir.

Şimdi geldik en can alıcı yönteme. Bu gerçekten çok etkili bir yöntemdir. Daha önce kullanmadım çünkü bu makaleyi yazmadan yarım saat önce aklıma geldi ve bir test uygulaması yaptım ve sonuç başarılı oldu. Hemen bu yöntemide eklemek istedim.


Random Name

Bu yöntem üzerine sayfa sayfa makalede yazabilirim aslında. Ama uzarda gider. Anlatabileceğim en basit haliyle anlatacağım. Her sayfa refresh edildiğinde yada siteye her girildiğinde fso kullanarak veritabanı ismini değiştiriyoruz. Bu isim random olarak verildiğinden bu ismide sadece yazacağımız script ve içerisindeki ismi değiştiren ve bizim algoritmamız ile isim veren fonksiyonumuz yada class"ımız bilecektir. Bununla ilgili bir örnek yapmak istiyorum ki daha açıklayıcı olsun. Sonrada makalemizi sonlandıralım ;

<%
Function nameChange(byVal strOldName, byVal strNewName)
 
       Set FSO = Server.CreateObject("Scripting.FileSystemObject")
       If FSO.FileExists(Server.MapPath(strOldName)) Then
           Set Dosya = FSO.GetFile(Server.MapPath(strOldName))
           Dosya.Name = strNewName `// İsim Değiştirildi
      End If

End Function

Progress = nameChange("45hgkhjuyii56asoyd.mdb","dsd56yuilkj.mdb")
%>

Bu tarz bi fonksiyon sayesinde db ismini her seferinde değiştirebiliriz. Bu fonksiyonun en basit halidir. Tabiki unutmamanız gereken bazı hususlar var mesela ; Yeni verilen Db ismini her seferinde session yada application nesnesinde yada ne bileyim cookies"de vs. tutmanız gerekir ki veritabanı provider"ı yazarken bu nesnelerde çekeceksiniz db ismini programa buradan bildireceksiniz. Aynı zamanda sabit isimler değil isim vermesi için numara harf karışımı kod üreten bir fonksiyon daha yazın. Onun algoritması sizin hayal gücünüze kalmış tabiki. O algoritmadan çıkan sonucu db ismine verin. Bu şekilde veritabanı isminiz her seferinde değiştiğinden erişimi saldırgan için hayli güç olacaktır.

İyi çalışmalar...





Derecelendir
Kaynak ErkanKESKİN Tarafından yazılmış/derlenmiştir.
İçerik İhbarı
Bağlantılar Bg.org.tr

CS - Security Expert Network AUP&TOS