ASP.NET Web Uygulamalarında Güvenlik Cengiz HAN cengiz@cengizhan.com www.cengizhan.com 1 ASP.NET Web Uygulamalarında Güvenlik Konu 1: Web Uygulaması Güvenlii Temel Kavramlar Konu 2: Windows Tabanlı Kimlik Denetimi Konu 3: Form Tabanlı Kimlik Denetimi 2 1
Konu 1: Temel Güvenlik Kavramları Kimlik Denetimi (Authentication) Kullanıcıların tanımlanması aaması Yetkilendirme (Authorization) Kullanıcının kimlii dorultusundan eriim haklarını belirleme aaması 3 Anonim (Anonymous) Eriim Internet üzeriden bulunan web sitelerinin çounda anonim eriim kullanılır. Sitenin her bölümünün herkese açık olduu ve sitenin gizli veya kiiye özel bilgi içermedii durumlarda... ASP.NET Web Uygulamaları anonim eriim için taklit etme (Impersonation) yöntemini kullanır. Kimliksiz eriim yapan kullanıcıya genel bir kullanıcı hesabı atanması yapılarak yetkilendirme yapılır. Varsayılan olarak bu kullanıcı hesabının adı ISUR_makineadieklindedir. 4 2
Kimlik Denetimi ile Eriim ASP.NET Kimlik Denetimi Yöntemleri Microsoft Passport Windows tabanlı Form tabanlı 5 Uygun Kimlik Denetim Sistemini Seçmek Anonim Tanıtım siteleri Kullanım klavuzu Windows tabanlı Intranet uygulamaları Form tabanlı Alı-veri sitesi 6 3
Web.Config Dosyasının Güvenlik Ayaları Açısından Temel Yapısı <authentication> Kimlik denetim sisteminin belirlenir <authorization> Yetkilendirme ilemi için 7 Konu 2: Window Tabanlı Kimlik Denetimi Window Tabanlı Kimlik Denetimi Nedir? Windows tabanlı kimlik denetimi Windows iletim sistemi üzerine kurulu çalıır ve sunucu bilgisayar üzerindeki kullanıcı listesi ile kimlik denetimi yapar. 8 4
Windows Kimlik Denetiminin Etkinletirilmesi Adım Adım Etkinletirme Alt Klasör ve Dosyalar için Yetkilendirme Ayarları 9 Bir Kullanıcı için zinlerin Verilmesi ve Kısıtların Konulması ASP.NET Web.config dosyasındaki <authorization> düümü içerisindeki kullanıcı listesine bakarak kullanıcının uygulama üzerindeki yetkilerine karar verir. ASP.NET <authorization> düümü içerisinde kullanıcıların eriim yetkilerini kontrol ederken yetkilendirme bildirimlerinden kullanıcı ile ilk uyuanı kullanır. Bu sebeple istenen kullanıcılara yetki verildikten sonra mutlaka <deny> düümü ile önceki yetkilendirme düümleri ile uyumayan kullanıcılar için kısıtlama yapılmalıdır. Bunu ise yıldız (*) karakteri vererek salayabiliriz. 10 5
Rol Tabanlı Kimlik Denetimini Kullanmak Her kullanıcıya yetki verilmek ile uramadan belli bir rol üzerinde yetkilendirme ilemi gerçekletirilir. Kullanıcılarda bu rolleri üstlendirilir. 11 Rol Tabanlı Kimlik Denetimini Kullanmak Sadece Stajerler grubundakilerin ve anonim eriim ile balanmak isteyenlerin uygulamayı kullanmasının kısıtlanması, dier tüm kullanıcıların uygulamaya eriebilmesini salayan bir <authorization> düümü : 12 6
Kullanıcı Bilgisini Okumak Uygulamaya giri yapmı olan kullanıcınınn bilgilerini okumak User nesnesinin Identity özellii kullanılır. Identity özellii kullanıcı adı ve rol bilgilerini içeren bir nesne döndürmektedir. 13 Konu 3: Form Tabanlı Kimlik Denetimi Form Tabanlı Kimlik Denetimi Nedir? Form tabanlı kimlik denetimi programcının düzenledii bir Web Formu ile kimlik bilgilerinin kontrol edilmesi esasına dayanır. Web.config dosyasındaki kullanıcı listesine veya programcı tarafından düzenlenen ayrı bir veritabanına göre kimlik denetimi ve yetkilendirme yapılır. Form tabanlı kimlik denetiminde uygulamaya erimek için kullanıcıların herhangi bir aa üye olmalarına ihtiyaç yoktur. Form tabanlı kimlik denetimi daha çok herkese açık internet uygulamalarında kullanılır. 14 7
Form Tabanlı Kimlik Denetiminin Etkinletirilmesi Form tabanlı kimlik denetimi programcıya kendi kullanıcı veritabanını oluturma imkanı tanır. Adım Adım Etkinletirme 1. Web.config dosyasından kimlik denetim sistemi Forms olararak ayarlanır. 2. Kullanıcı kimlik bilgilerinin (kullanıcı adı, ifre) girilecei bir Web Form oluturulur. 3. Kullanıcı kimlik bilgilerinin saklanması için istee seçime balı olarak programcının belirledii parametreler çerçevesinde bir veritabanı oluturulur veya Web.config dosyasında gerekli tanımlamalar yapılır. 4. Oluturulan Web Formuna kullanıcıların kimlik bilgilerinin denetlenmesi için gerekli kod yazılır. Buradaki denetleme için yazılacak kod parçası kullanıcı listesinin özel bir veritabanında mı, yoksa Web.config dosyasında mı tutulduuna göre deiir. 15 Web.config Üzerindeki lemler 16 8
Web.config Üzerindeki lemler <authentication> mode: Kimlik denetim sistemi (Forms) <forms> name: Çerezin (cookie) ismini belirler.(varsayılan :.ASPXAUTH) loginurl: Giri sayfası. protection: Kullanıcı bilgisayarında saklanacak olan çerezin (cookie) güvenliinin nasıl salanacaını belirler. All, Encryption, Validation, None. Varsayılan olarak All deerini alır. All deeri ile çereze yazılacak verilerin güvenlii en iyi ekilde salanmaktadır. timeout: Kimlik denetimi çerezlerinin kaç dakika geçerli olacaını belirler. (30) path: Oluturulacak çerezlerin yol tanımlaması için kullanılır. Varsayılan deeri / dır. requiressl: Kimlik denetim çerezinin transferi için güvenli balantı gerekip gerekmediini belirler. slidingexpiration: Alabilecei deeler true ve false dur. true deerini aldıında kullanıcıdan gelen her istek ile zaman aımı (timeout) süresi geri sayımı en batan tekrar balar..net Framework 1.0 da varsayılan deer true idi,.net Framework 1.1 versiyonunda varsayılan deer false dur. 17 Web.config Üzerindeki lemler <credentials> düümü içerisine eklenen <user> düümleri ile Web.config dosyası içerisinde kullanıcı tanımlaması yapılabilir. <credentials> passwordformat : Kullanıcıifrelerine uygulanan karakter ifreleme (encrypt) yöntemi belirlenir. SHA1, MD5 ve Clear. Varsayılan deer SHA1 dir. <users> name : Kullanıcının adını belirler. password : Kullanıcının ifresini belirler. Belirlenen passwordformat deeri ile uyumlu bir deer almalıdır. Bu ekilde bir uygulamada programcı yada bir yönetici tarafından Web.config dosyasına ekleme yapılmasıyla çalıabilir. Kullanıcıların kendi kullanıcı hesaplarını oluturabilecei ve kimlik bilgilerinin yönetimini kendileri yapabilecei bir uygulama için kullanılamaz. 18 9
Kullanıcı Giriini Yapmak Form tabanlı kimlik denetiminde kullanıcının girii yapması için bir Web Form oluturulmalıdır. 4- Kimlik Dorulanır Sunucu Internet 1-stek: default.aspx 2- Cevap : UyeGirisi.aspx 3-stek: UyeGirisi.aspx + kimlik bilgileri 5- Cevap: default.aspx stemci 19 Web.config Dosyasındaki Kullanıcı Listesi ile Kullanıcı Girii Yapmak 20 10
Veritabanında Kayıtlı Olan Kullanıcı Listesi ile Kullanıcı Girii Yapmak <credentials> düümünün kullanılmasına gerek yoktur. Bu düüm sadece FormsAuthentication.Authenticate fonksiyonu tarafından kullanılır. 21 Kullanıcıyı Uygulamadan Çıkarmak Önce oturum çerezleri ve kalıcı çerezler kaldırılır. Daha sonra ise sonucun sayfaya yansıması için u anda bulunulan sayfa tekrar çarılır. Request.RawUrl uanda bulunulan sayfanın adresini döndürür. Örnein http://cengiz/b2b-web/siparislerim.aspx sayfasında bu özellik /b2b-web/siparislerim.aspx deerini döndürür. 22 11
Alt Klasörlere Eriim znini Ayarlamak Alt klasöre farklı bir eriim yetkisi vermek için Alt klasör içerisinde de bir Web.config dosyası oluturulabilir. Ana dizindeki Web.config dosyası ile farklı dosya ve alt klasörler için yetkilendirme yapılabilir. Bunun için <configuration> düümü içerisindeki <location> düümü kullanılır. Web uygulamasının kimlik denetim sistemi sadece ana klasörde bulunan Web.Config dosyası ile deitirilebilir. 23 Gözden Geçirme 1. ASP.NET ile hangi kimlik denetim sistemleri kullanılabilir. 2. Windows tabanlı kimlik denetim sistemi hangi durumlarda kullanılmalıdır? 3. Form tabanlı kimlik denetim sistemi hangi durumlarda kullanılmalıdır? 4. Form tabanlı kimlik denetim sistemi nasıl oluturulur? Açıklayınız. 5. Form tabanlı kimlik denetim sisteminde bir alt klasörün güvenlik ayarları nasıl ayarlanır. 24 12