Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Mustafa Erhan Ersoy
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
14
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
authenticate
authentication
bilgileri
dikkat
dizine
herhangi
kullanarak
kullanici
kullanicinin
parametre
passport
sayfaya
sisteme
web.config
yonetici
ASP.NET
Mustafa Erhan Ersoy
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
İleri
Kategori
:
ASP.NET
Yayınlanma Tarihi
:
9.6.2005
Okunma Sayısı
:
54800
Yorum Sayısı
:
6
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
1.6.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
1.6.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
ASP.NET
/
ASP.NET Güvenlik II - Form Tabanlı Güvenlik
ASP.NET Güvenlik II - Form Tabanlı Güvenlik
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
ASP.NET"te güvenlik konusunu ele aldığımız makale dizimize devam ediyoruz. Dizinin ilk bölümünde IIS güvenlik ayarlarından bahsettik.
ASP.NET Güvenlik - I
makalemi okumamış olan arkadaşlara tavsiyem öncelikle onu okuyup daha sonra bu makale ile devam etmeleridir.
Dizimizin ikinci makalesinde ASP.NET sınırları içerisinde güvenliği incelemeye çalışacağız. Ve güzel bir örnek üzerinde anlattıklarımızı uygulayacağız.
<authentication mode="Windows | Forms | Passport | None"/>
ASP.NET uygulamalarımızın işleyiş ayarlarını barındıran web.config dosyasında bildiğiniz üzere
authentication
tagi var. Bu tag ile authentication tipimizi "Windows", "Forms", "Password" yada "None" olarak belirleyebiliyoruz. Windows authentication"ı
ASP.NET Güvenlik - I
makalemde incelemiştim.
Passport authentication, Microsoft"un sağlamış olduğu merkezileştirilmiş, ücretli bir servistir. Bu servisi Microsoft"tan satın aldıktan sonra Passport SDK"yı yükleyerek Passport authentication"ı kullanabilirsiniz. Örneğin Hotmail gibi Microsoft çatısı altındaki siteler Passport authentication"ı kullanmaktadır.
Forms Authentication"a gelirsek - bu makalede form tabanlı authentication"dan bahsediyor olacağım - uygulamada sağlanan bir giriş formu sayesinde kullanıcının kimlik bilgilerini (credentials) toplayıp bu bilgileri veritabanı, XML, web.config yada Active Directory"deki kullanıcı bilgileri ile karşılaştırma işlemleri bütünüdür.
Uygulamamıza geçmeden önce
FormsAuthentication
sınıfından bahsetmek istiyorum. FormsAuthentication sınıfı, authentication biletleri hazırlamaya ve güncellemeye yarayan statik metodlar sunar.
FormsAuthentication sıkça kullanılan metodları :
Authenticate :
Parametre olarak geçilen kullanıcı ismi ve şifresini mevcut kullanıcı bilgileri içerisinde kontrol eder.
HashPasswordForStoringInConfigFile :
Parametre olarak geçilen şifreyi seçilen algoritmaya göre şifreler.
RedirectFromLoginPage :
Login sayfasında kullanılmak üzere tasarlanmış olam bu metod, kullanıcının istemde bulunduğu sayfaya yönlenmesini sağlar.
SignOut :
Sisteme giriş yapmış kullanıcının bilgileri bir cookie"de tutulur. Bu cookie"yi zaman aşımına uğratıp kullanıcının sistemden güvenli çıkış yapmasını sağlar.
Uygulamamız aşağıdaki resimden anlaşılacağı üzere iki mantıksal bölüme ayrılmış durumda. Uygulamaya iki tip ziyaretçi girebiliyor. Birinci tip ziyaretçi, kullanıcı dizinindeki sayfaları ziyaret edebiliyor. Bu dizin içerisindeki içeriği görebilmek için herhangi bir authentication gerekmiyor.
İkinci tip ziyaretçi ise belli haklara sahip olacak, site yöneticisi kullanıcısı. Bu kullanıcı hem
kullanici
hemde
yonetici
dizinlerine girebilir.
yonetici
dizinine girebilmesi için authenticate olması gerekir. Sisteme giriş yapabilmesi için
giris.aspx
sayfasını kullanır.
Şekil - 1. Uygulamanın solution explorer"dan görünümü.
Şimdi tüm bu anlattığımız authentication işlemlerini kolaylıkla ve ileriye dönük olarak en az efor ile nasıl hazırlayabiliriz açıklamaya çalışalım. bu iki dizine ekleyeceğimiz her sayfa için ek olarak bir de güvenlik özelliği eklemek ile uğraşmamalıyız. Bu sıkça güncellenen siteler için çok önemli bir özelliktir.
Aşağıdaki kod parçasında bu proje için hazırladığım web.config dosyasından bir parça görüyorsunuz. Bu kod parçasında uygulamamızın iki dizinini tanımlıyoruz ve bu dizinler için authorization kriterlerini belirliyoruz.
location
tagini kullanarak uygulamamız içerisindeki herhangi bir dizine ait ayarları bu tag içerisinde belirleyebiliriz. Yada diğer bir yöntem, bu klasör içerisine
de
bir web.config dosyası ekleriz. (NOT : location taginin configuration tagi içerisinde olduğuna ve kendine özel bir system.web tagi içerdiğine dikkat edin.)
Authorization tagi içerisindeki
allow
va
deny
taglarına dikkat edelim.
allow
tagi izin verilecek kullanıcı veya rolleri belirlemeye yarar.
users
veya
roles
attribute"lerini kullanabiliriz
allow
tagi içerisinde. Bu attributelere istersek rol veya kullanıcı adı, istersek
*, ?
gibi özel anlamı olan joker karakterler verebiliriz.
*
Authenticate olsun olmasın tüm ziyaretçileri kapsar.
?
Authenticate olmamış olan kullanıcıları kapsar.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="giris.aspx" protection="All" timeout="10">
<credentials passwordFormat="MD5">
<user name="yonetici" password="420bc0eb0c541056d0f6b973d691d663"/>
</credentials>
</forms>
</authentication>
<!-- ŞYFRE : csharpnedir -->
<authorization>
<allow users="*" />
</authorization>
</system.web>
<location path="kullanici">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="yonetici">
<system.web>
<authorization>
<deny users="?" />
<allow users="yonetici" />
</authorization>
</system.web>
</location>
</configuration>
Dikkat edeceğiniz üzere yonetici dizininde autheticate olmamış kullanıcıları reddediyoruz. Sonra sadece
yonetici
kullanıcısına giriş izni veriyoruz.
Authentication uygulamamızın tamamı için geçerli olan en üstteki Authentication tagi içerisindeki
forms
tagine dikkate ederseniz login sayfasının yeri belirtilmiştir. Yani uygulama içerisindeki authentication gerektiren bir dizine giriş isteği geldiğinde eğer isteği yapan authenticate olmamış ise bu login sayfasına yönlendirilecek.
form
tagi içerisindeki
credentials
tagine dikkat edelim şimdi de,
passwordFormat
olarak "Clear", "SHA1", "MD5" girebiliyoruz.
"Clear" : Authentication mekanizmasına, şifremizi herhangi bir şifreleme yapmadan açık açık yazdığımızı belirtmiş oluyoruz. Kullanmanızı kasinlikle tavsiye etmiyorum.
"SHA1", "MD5" : Encryption algoritmalarını kullanarak şifrenizi şifrelediğinizi belirtmiş oluyorsunuz.
Gördüğünüz gibi benim belirlediğim yonetici kullanıcısı şifresi MD5 ile şifrelenmiş durumda. (Uygulamalarında kullanacağınız şifreleri ek olarak eklediğim basit metin şifreleme uygulamasını kullanarak encrypt edebilirsiniz yada FormsAuthentication sınıfının HashPasswordForStoringInConfigFile metodunu kullanabilirsiniz.)
Şekil - 2. Basit metin şifreleme uygulaması. Web.config dosyamızı yukarıdaki gibi ayarladığımız zaman artık yonetici klasörü içerisine istediğimiz kadar sayfa ekleyebiliriz. Bu sayfaların hiçbirinin yonetici kullanıcısı dışında bir ziyaretçi tarafından görülemeyeceğine emin olabilirsiniz.
Şimdi giris.aspx sayfamızı incelemeye çalışalım :
Şekil - 3. giris.aspx sayfası (login sayfası).
if (FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true);
Gördüğünüz gibi authentication işlemini gerçekleştirebilmemiz için FormsAuthentication sınıfının Authenticate methodunu kullanmamız yeterli. Authenticate methodu çağrıldığında parametre olarak geçilen kullanıcı bilgileri web.configdeki mevcut kayıtlar ile karşılaştırılıyor. Bu kayıtlardan birinin tutması halinde istekte bulunan sayfaya yönlendiriyoruz kullanıcıyı. İşte bu durumda authorization mekanizması çalışıyor. Ziyaretçinin görmek istediği sayfayı görmeye hakkı olup olmadığı kontrol ediliyor. Eğer var ise ziyaretçi sayfayı göüyor. Yok ise ziyaretçi tekrar giriş sayfasına yönlendiriliyor ve bu sayfaya girebilecek bir kullanıcı ile sisteme girmesi isteniyor.
Sonuç Gördüğünüz gibi birkaç ayar yaptıktan sonra kullanıcı yönetimini sağlamak çok basit. Fakat bu gösterdiğim örnek elbetteki çok fazla üyesi olan uygulamalar için geçerli olamayacaktır. Bu durumda kullanıcı bilgileri XML yada varitabanıonda tutulur ve authentication işlemi için ekstra bir efor sarfederiz. Ama birkez sistem hazırlandığı zaman tekrar tekrar her bir sayfaya uygulamak zorunda kalmazsınız.
Kaynaklar
OReilly - Programming ASP.NET
MSDN
4guysfromrolla.com
Basit encryption uygulaması
Makalede anlatılan uygulama
Makale:
ASP.NET Güvenlik II - Form Tabanlı Güvenlik ASP.NET Mustafa Erhan Ersoy
Yazılan Yorumlar
Yorum Yaz
ŞUB
9
2010
altug fb
/
üye hakkında
bu yorum kısmını neden yapıyorsunuz cevap vermicekseniz???
OCA
4
2010
Mehmet Ali KİRAZ
/
üye hakkında
hocam kafama takılan bir şey var, if (FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text)) FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true); burada kod blogunun altına birde response.redirect(yonetici.aspx); eklememiz gerekmiyor mu ya da, web config de belirtmemiz ??? çünkü bunu koymadan keisnlikle sayfa yönlenmiyor yonetici saifesine ? ya da web.config de atladığımız bir şey mi var ???
TEM
16
2008
tolga kendir
/
üye hakkında
Hocam Merhabalar Ben sizin makalede işlediğiniz şekilde bir sitenin yönetici bölümününe authorization yoluyla güvenli giriş işlemi uygulamaya çalıştım. Ancak bende Linq tür veya ad alanı adı System ad alanında yok gibi bir hata verdi. Sonra ben sizin örneğinizi doğrudan sitemin içine eklemeye çalıştım yine aynı hatayı aldım. Oysa sizin projeyi indirip incelediğim de sizin projenizde de Using System. Linq alan adı yoktu ama sizinkin de sorun da yoktu. Ben kendi projeme bu alan adını eklediğimde de sorun düzelmedi. Ben nerede hata yapıyorum çözemedim bir türlü. Bana yardımcı olursanız çok sevinirim. Şimdiden teşekkür ederim.
TEM
16
2008
tolga kendir
/
üye hakkında
Hocam Merhabalar Ben sizin makalede işlediğiniz şekilde bir sitenin yönetici bölümününe authorization yoluyla güvenli giriş işlemi uygulamaya çalıştım. Ancak bende Linq tür veya ad alanı adı System ad alanında yok gibi bir hata verdi. Sonra ben sizin örneğinizi doğrudan sitemin içine eklemeye çalıştım yine aynı hatayı aldım. Oysa sizin projeyi indirip incelediğim de sizin projenizde de Using System. Linq alan adı yoktu ama sizinkin de sorun da yoktu. Ben kendi projeme bu alan adını eklediğimde de sorun düzelmedi. Ben nerede hata yapıyorum çözemedim bir türlü. Bana yardımcı olursanız çok sevinirim. Şimdiden teşekkür ederim.
NİS
30
2006
Selçuk ÖZDOĞAN
/
üye hakkında
Elinize sağlık, çok işime yaradı.
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl