Ana içeriğe atla

ASP.NET Güvenlik Üzerine

Yazılım mühendisliğinde “güvenlik” birbirinden çok farklı ve geniş anlamlar ifade eden bir kavramdır. Fakat güvenliği ASP.NET özelinde ele alırsak, güvenliğin erişim kontrolü temelinde yapılandırıldığını görürüz. Bu yapı, kimlik belirleme (Authentication) ve yetkilendirme (Autharization) temelinde yönetilir.
Kimlik Belirleme(Authentication) Metodları
Kullanıcı kimlik biligisini belirlemek te kullanılan yöntemler aşağıdaki gibidir;
  1. Forms (Cookie) Authentication
  2. Windows Authentication
    1. Basic
    2. Digest
    3. Integrated (NTLM, Kerberos)
  3. Passport Authentication
ASP .NET ‘te bu metotlardan herhangi birisinin uygulanabilmesi için web.config dosyasının authentication elementinin mode özelliğinde seçilir.
<authentication mode="Windows | Forms | Passport | None" />

1.Forms Authentication
Uygulamamızda tüm kullanıcıların erişebilecekleri giriş formu sayesinde kullanıcı bilgilerini toplayıp bu bilgileri veritabanı, XML, web.config yada Active Directory"deki kullanıcı bilgileri ile karşılaştırarak kullanıcı kimlik belirlemesi ve yetkilendirmesinin yapıldığı yöntemdir. Burada kullanıcı bilgileri cookie ler de saklanır,opsiyonel olarak  kullanıcıdan her seferinde tekrar tekrar aynı bilgileri istememek adına, bu bilgiler belirli bir süre için kullanıcının makinesindeki özel bir cookie içerisinde tutulur, şayet kullanıcı bu süre içerisinde aynı uygulamaya tekrar girmek isterse, credential’lar bu cookie içerisinden otomatik olarak okunarak ve kullanıcının haberi olmadan kimlik belirlemesi gerçekleştirilebilir.
Web.Config
<authentication mode="Forms">
   <forms name="Univera" loginUrl="Interface/KullaniciGirisi/LoginMain.aspx" protection="All" timeout="19" path
="/">
     
<credentials passwordFormat="Clear">
       
<user name="huseyin" password="hsyn44" />
       
<user name="cam" password="cam44" />
     
</credentials>
   
</forms>
</authentication>
  • name : Cookie’nin ismi;kullanıcı@localhost isminde bir cookie oluşuyor.
  • loginUrl : Login sayfasının URL yolu.
  • protection : Koruma yöntemi.
    1. Encryption: Cookie şifrelenir.
    2. Validation: Cookie içeriğinin değişip değişmediğine bakılır.
    3. All: Encryption + Validation
    4. None: 2 si de yapılmaz.
  • timeout : Dakika cinsinden sona erme süresi.  Default 20.
  • path : Konum. Varsayılan /.
  • credentials : Kullanıcı bilgilerini içerir.
  • passwordFormat : Şifrelerin nasıl saklanacağı.
    1. Clear: Şifresiz saklama. Tavsiye edilmiyor.
    2. MD5: Şifreli
    3. SHA1: Şifreli
Yukarıdaki web.config örneğinde kullanıcı bilgilerini web.config te credentials elementinde tanımlanmıştır. Ama biz uygulamamızda veri tabanında saklayıp.Kimlik doğrulama kısmında FormsAuthentication sınıfını kullanmayıp kendimiz kontrol edip kullanıcı kimliğinin doğru olduğunu koddan kendimizin verdiği örnek aşağıdaki gibidir.
If isKullaniciOk Then
   
FormsAuthentication.SetAuthCookie(txtKullanici.Text, False)
   
RedirectToMainMenu()
End If
FormsAuthentication Sınıfı
  • Authenticate(ByVal userName As String, ByVal password As String) Parametrelerine girilen kullanıcı adı ve şifrenin, web.config dosyasında tanımlı olan şifreler ile eşleşip eşleşmediğini gösteren Boolean  bir değer döndürür.
  • RedirectFromLoginPage(ByVal userName As String, ByVal createPersistentCookie As Boolean) Kimliği doğrulanmış bir kullanıcıyı cookie de saklayıp, talep ettiği sayfaya yönlendirir. İlk parametresi kullanıcı ismidir. 2. parametresi ise, güvenlik bilgilerinin kalıcı bir cookie içerisinde saklanıp saklanmayacağını belirtir. True geçilirse; söz konusu bilgiler kalıcı bir cookie içerisinde saklanır, ve cookie silinene ya da expire olana kadar aynı bilgilerin tekrar girilmesi önlenmiş olur. False geçilirse bu bilgiler aslında geçici bir cookie içerisinde saklanır.
  • SetAuthCookie(ByVal userName As String, ByVal createPersistentCookie As Boolean) RedirectFromLoginPage() metodu ile aynı görevi yapar ama otomatik olarak yönlendirme yapmaz.
  • Signout() Metodu : İstemcideki cookie’yi siler.
Authorization
Web.config te location elementi ile formlara veya dizinlere erişim yetkileri yönetilir.allow veya deny elementleri ilede yasaklayacağı veya izin vereceği kullanıcı/kullanıcı türü erişim değerleri atanır.
Kullanıcı Gelen İfadeleri;
  • * (Tüm Kullanıcılar)
  • ? (Authenticate olmamış olan kullanıcılar)
  <location path="Interface">
    <system.web>
      <authorization
>
        <deny users=
"?" />
                  <allow users="nuri" />
      </authorization>
    </system.web
>
  </location>
  <location path="Interface/Common/WebMessageBox.aspx">
    <system.web>
      <authorization
>
        <allow users=
"*" />
      </authorization>
    </system.web>
 
</
location>
2.Windows  Authentication
Windows erişim modelinde kullanıcı kontrolü Login formda değil IIS uygulaması seviyesinde yapılır. Bunun için web.config ve IIS seviyesinde Authentication parametrelerin değerlerini aşağıdaki gibi düzenlemek gerekli. Aşağıdaki IIS Authentication ayarları Windows-Basic Authentication doğrulamasi için yapılmıştır.
<authentication mode="WindowsForms"/>
<identity impersonate="true" />
image
Impersonation
Sisteme giriş yapan kullanıcının bir başkasıymış gibi yetkilendirilmesi fonksiyonuna impersonation denir. Bu elementi web.config te  true yaptığımızda ASP.NET Worker Process  login olan windows kullanıcı bilgisi ve haklarıyla işlem yapar. Atanmadığında varsayılan değeri false tur.
Authentication Yöntemleri
Basic Authentication
En basit yöntemdir.Hemen hemen her tarayıcı bu yöntemi destekler. Kullanıcı kontrolünü standart windows logon ekranı ile yapar.
image
Digest Authentication
Internet Explorer 5.0 ve üstü ile çalışır. Kullanıcı adı ve şifresi networkte taşınmaz, onun yerine bir hash transfer edilir. Dolayısıyla network alan adı altındaki tüm kullanıcı şifreleri geri çevrilebilir bir algoritma ile Active Directory de saklanır. 
Windows Authentication
Bu yöntemde, öncelikle makinada oturumu açmış kullanıcı ile giriş yapılır o kullanıcının hakkı yok ise windows logon ekranı ile başka kullanıcı ile login olması istenir.
3. Passport Authentication
Birçok site için kullanıcı adı ve parolalarının senkronize edildiği Microsoft tarafından barındırılan ve merkezi olarak yönetilen bir servistir. Bu servisi Microsoft"tan satın aldıktan sonra Passport SDK"yı yükleyerek Passport authentication"ı kullanılabilir.  Passport etkin bir sitede imzalandığında, kullanıcının bu tip uygulamaların hepsi için kimlik denetimi yapılmış olur.
Hüseyin ÇAM

Yorumlar

  1. Merhabalar ilk olarak çalışmalarınızda başarılar dilerim, benim bir problemim var elimde .net teknolojisiyle oluşturulmuş bir adet website mevcut fakat localhostta yayınladığımda Authentication.aspx isimli bir sayfa açılıyor ve bu sayfadada kullanıcı adı ve şifrenin bulunduğu bir ekran var buraya web.config dosyasının içindeki user ve pasword bilgilerini girdiğim zaman hatayla karşılaşıyorum YANLIŞ ŞİFRE VE KULLANICI ADI gibi.. Ne yapmam gerekli? eğer dosyayı göremeden bir şey söyleyemem derseniz sizin için de bir problem teşkil etmezse msn üzerinden yardımlarınızı talep edeceğim doganmermer@msn.com bu konuda beni bilgilendirir ve sorunumu çözmeme yardımcı olursanız sevinirim.. Doğan MERMER

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Ama

Yazılım Maliyet Tahmineleme Tecrübeleri

Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:) Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir. Örneğin; bizim firmada e

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde ( 1 , 2 ) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki: “Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler , Sistem (Proje kapsamını belirtir) , Use Caseler ve bunlar ara