ASP uygulamalarında Access veritabanını korumak

Performans, ölçeklenebilirlik ve yönetimsel açıdan çok tavsiye edilmese de hala bazı küçük projelerde veritabanı olarak Access kullanılmaktadır. Bu gibi durumlarda uygulama geliştiren arkadaşlardan sıkça şu soruyu duymaktayız:

“IIS 6.0 altında ASP ile geliştirdiğimiz web sitemizde veritabanı olarak Access kullanıyoruz ve Access veritabanı dosyamızı web sitesinin bir klasöründe tutuyoruz. Bu dosyanın ismini ve hangi klasörde yer aldığını bilen birisi tarayıcı ekranına dosyanın tam yolunu yazarak client’a bu dosyayı indirebiliyor. Bunu engellemenin yolu var mıdır?”

Örneğin, web sitenizin ismi www.ahmetmithat.com olsun ve Access veritabanı /db klasörü altında yer alsın. Access veritabanı dosyasının ismi de kullanicilar.mdb olsun. Bu durumda eğer IIS konfigürasyonu düzgün yapılmamışsa herhangi bir kullanıcı, tarayıcı üzerinden https://www.ahmetmithat.com/db/kullanicilar.mdb adresini yazarsa dosyayı indirip açabilir ve hassas bilgilere ulaşabilir.

İlk olarak söylenmesi gereken, bu veritabanı dosyasının gizli olması gerekliliğidir. Yani herhangi bir kullanıcı bu dosyanın adresini biliyorsa sunucu güvenliğinden önce bu gibi bilgilerin korunması için gerekli olan adımları atmalısınız.

Eğer uygulama havuzunuz (application pool) ASP.NET 2.0 çalıştıran bir uygulama ise default olarak tanımlı olmayan MDB dosyasına erişilmeye çalışıldığı zaman “This type of page is not served” mesajı ile karşılaşıyor olmalısınız. Eğer ASP.NET 1.1 ise ya da sunucu üzerinde ASP.NET kurulu değilse yapmanız gereken, bu dosyadan ya da (aynı klasör içinde birden fazla MDB dosyası varsa) bu klasörden “read” hakkını kaldırmanız gerekecektir. Bunun için IIS 6.0 arabiriminde ilgili dosya ya da klasör üzerinde sağ klikleyip özellikleri seçmeniz ve “read” kutucuğunu kaldırmanız yeterli olacaktır:

IIS 6.0 Read Hakkı

Bu değişiklik sonrasında bu dosyayı tarayıcı üzerinden indirmeye çalışan kullanıcılar “HTTP Error 403.2 - Forbidden: Read access is denied” hatası alacaklardır ama web uygulamanız bu veritabanına bağlanmaya devam edecektir.

IIS 7.x altında ise böyle bir dosyaya erişilmeye çalışıldığı zaman eğer aksi şekilde konfigürasyon yapılmamışsa kullanıcılar “HTTP Error 404.7 - Not Found” hata mesajı alacaklardır.

Geçerli olduğu platformlar:

IIS 6.0
ASP ve Access veritabanı

--
AMB