ASP güvenliğini uygulamak için veritabanı ve ASP oturumları nasıl kullanılır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)

Makale çevirileri Makale çevirileri
Makale numarası: 299987 - Bu makalenin geçerli olduğu ürünleri görün.
Duyuru
Tüm kullanıcıların Microsoft ınternet ınformation Services (IIS) sürüm 6.0 yükseltmenizi öneririz Microsoft Windows Server 2003 üzerinde çalışan. IIS 6.0, Web önemli ölçüde artırır altyapı güvenliği. IIS güvenliği ile ilgili konular hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, form tabanlı güvenlik Active Server Pages (ASP) uygulamaları için nasıl anlatılır. Bu mekanizma, uygulama güvenliği artırılmış veya yalnızca kimliği doğrulanmış kullanıcılara izin vermek istediğiniz zaman kullanabilirsiniz. Kullanıcıların ınternet kullanıcıları gibi dahili bir etki alanının parçası olması durumunda, bu mekanizma kullanabilirsiniz. Bu örnek kullanıcıların bilgileri depolamak için bir veritabanı kullanır ve ardından kullanıcıları bu veritabanıyla doğrular.

ÖNKOŞULLAR

  • Microsoft Windows NT 4.0 Workstation, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Server veya Microsoft Windows Server 2003 Gelişmiş...
  • Microsoft ınternet ınformation Server (IIS) 4.0, Windows NT 4.0 çalıştırılan bilgisayarlar için Windows 2000 çalıştıran bilgisayarlar için Microsoft ınternet ınformation Services (IIS) 5.0 veya Microsoft ınternet ınformation Services (IIS) 6.0, bilgisayarlar için Windows Server 2003 çalıştırıyorsunuz
  • Microsoft SQL 6.5 sürümünüzün SP5'e veya SQL Server'ın sonraki bir sürümü

Bu uygulamayı nasıl

Bu bölümde, ASP Web uygulamanızı, form tabanlı güvenlik veya özel güvenlik uygulamak için gereken adımları kısaca açıklanmıştır:
  1. Bir oturum açma formu kullanıcıya sunar.
  2. Kullanıcı kimlik bilgileri karşı kullanıcı veritabanınızda saklanan kullanıcı bilgilerini doğrulayın.
  3. Bir oturum değişkeni oluşturun ve değerini kullanıcı KIMLIğI için ayarlayın.
  4. Kullanıcının yaptığı her izleyen isteğini, bu oturum değişkeni değerinin yerine boş bir dizeye eşit olduğunu doğrulayın ("") kullanıcı açmış doğrulayın.
  5. Değişkeni boş ise, kullanıcı geçerli bir kullanıcı değil ya da Kullanıcı oturumdan oturum. Değişken boşsa, kullanıcı oturum açma sayfasına yönlendirir.
  6. Kullanıcı, veritabanınızda olmadığından, oturum açma başarısız olursa, kullanıcının sitenizde henüz kaydedilmemiş olabilir. Kullanıcı, kullanıcı, sitenizde kaydedebilirsiniz böylece Register.asp sayfaya yeniden yönlendirin. Kullanıcı kaydeder, bu kullanıcı ayrıntıları, kullanıcı veritabanına eklenir.
  7. Kullanıcı oturumdan oturumu, oturum açma sayfası dışındaki tüm sayfalarda sayfanın dışına günlük için bir bağlantı sağlar. Bu sayfayı kullanıcı KIMLIĞI, boş bir dize atayarak tutan oturum değişkeni temizler ("").

Kullanıcı bir veritabanı tablosu oluşturma

  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, notepadkutusuna yazın ve Not Defteri'ni başlatmak için ENTER tuşuna basın.
  2. Aşağıdaki SQL komut dosyası vurgulayın, komut dosyasını sağ tıklatın ve sonra Kopyala ' yı tıklatın. Not Defteri'nde YapıştırDüzenle menüsü üzerinde tıklatın.
    CREATE TABLE [Users] (
    	[uid] [varchar] (25) NOT NULL ,
    	[password] [varchar] (25) NOT NULL ,
    	CONSTRAINT [PK_Users] PRIMARY KEY  CLUSTERED 
    	(
    		[uid]
    	)  ON [PRIMARY] 
    ) ON [PRIMARY]
    GO
    					
  3. Dosya menüsünde Kaydet ' i tıklatın. Dosya adı</a0> kutusunda, User.txt yazın.
  4. Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Microsoft SQL Server ' ın üzerine gidin ve Query Analyzer ' ı tıklatın. SQL Server'a bağlan iletişim kutusunda, SQL Server, kullanıcı KIMLIĞINI ve parolayı SQL Server'a bağlanmaya çalışan sunucunun adını belirtin.
  5. Dosya menüsünden ' ı tıklatın. iletişim kutusunun içine tıklatın tüm dosyalar (*. *) <a0>Dosya türü</a0> kutusundaki. User.txt listede tıklatın ve sonra ' ı tıklatın.
  6. Araç çubuğunda VERITABANı iletişim kutusunda, bu tabloyu oluşturmak istediğiniz veritabanını seçin. Bu amaçla belirli bir veritabanı yoksa, pubs örnek pubs veritabanındaki bu tablo oluşturmak için tıklatın.
  7. Veritabanını seçin sonra sorguyu çalıştırmayı sorgu menüsünde Çalıştır ' ı tıklatın. Bu adım, seçili veritabanında bir kullanıcı tablo oluşturur.

Oluşturma ve sanal dizinini yapılandırma

  1. Windows Gezgini'nde, Web kökünün altında bir klasör oluşturun. Varsayılan olarak, Web kökü SystemDrive olur: \ınetpub\wwwroot. ASPSecureAPP klasör adı.
  2. ınternet Hizmetleri Yöneticisi Microsoft Yönetim Konsolu (MMC) açın.

    Not Windows NT 4. 0'da, bu MMC ınternet Service Manager olarak adlandırılır.
    • Windows 2000 veya Windows Server 2003 çalıştıran bir bilgisayarda ınternet Services Manager'ı açmak için Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, inetmgr <a2></a2> kutusuna yazın ve ENTER tuşuna basın.
    • Windows NT 4.0 çalıştıran bir bilgisayarda ınternet Hizmet Yöneticisi'ni açmak için şu adımları izleyin:
      1. Başlat ' ı tıklatın, Programlar ' ın üzerine gidin, Windows NT 4.0 Option Pack ' ı işaretleyin ve Microsoft ınternet ınformation Server ' ı tıklatın.
      2. Internet Service Manager ' ı tıklatın.
  3. Makine genişletmek ve Varsayılan Web sitesi ' ni genişletin. 1. Adımda oluşturduğunuz ASPSecureAPP klasörü sağ tıklatın ve sonra da Properties ' i tıklatın.
  4. Dizin sekmesinde özellikleri</a0> iletişim kutusunda, dizin bir uygulama olarak işaretlemek için oluşturmaUygulama ayarları</a0> bölümünde'u tıklatın.

Örnek sayfaları oluşturma

Not Bu sayfaları oluşturmak için Not Defteri'ni kullanın, dosyaları kaydederken Farklı Kaydet iletişim kutusunda, <a1>Kayıt türü</a1> kutusundaki Tüm dosyalar tıklattığınızdan emin olun.
Logon.asp
Bu sayfayı, kullanıcıların kullanıcı adlarını ve parolalarını, sitenize erişebilir yazın sağlar.

Aşağıdaki kod yeni bir ASP sayfasına kopyalayın. Logon.asp Inetpub\Wwwroot dizinin ASPSecureAPP klasördeki dosyayı kaydedin.
<%
'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>
<html><body>
<form action="Validate.asp" method="post">
<P>
Login ID:&#xa0;&#xa0;  <INPUT type=text id=UID  name=UID> <br>
Password:&#xa0;&#xa0;<input type="password" id="passwd" name="passwd"> 
</P>
<input type="submit" value="Logon" id="submit1" name="submit1">
</form>
</body></html>
				
Validate.asp
Kullanıcının uygulamanıza oturum açmak için kullanıcının oturum açma bilgilerini sağlar bu sayfayı kullanıcı bilgilerini doğrulama sonra sonra da kullanıcı için uygun sayfaya yönlendirir.

Aşağıdaki kod yeni bir ASP kopyalama sayfası. Bağlantı dizesi parametrelerini değiştirir, böylece bunlar geçerli değerler içerdiğinden. Bağlantı dizesi Parametreler şunlardır:
  • Kullanıcı KIMLIĞI
  • Parola
  • Başlangıç Kataloğu
  • Veri kaynağı
Dosyayı Validate.asp Inetpub\Wwwroot dizinin ASPSecureAPP klasörüne kaydedin.
<%
Response.Buffer=true

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

Dim userid
Dim Pwd
'Assign the user ID to this variable. The user provides the user ID.
userid= Request.Form("UID")
'Check whether userid is an empty string. If it is empty, redirect to Logon.asp.
'If it is not empty, connect to the database, and validate the user.

if userid <> "" then
    pwd = Request.Form("passwd")
	
    Dim Cn
    Dim Rs
    Dim StrConnect

'Specify the connection string to access the database.
'Remember to change the following connection string parameters to reflect the correct values
'for your SQL server.
    StrConnect = "Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;" & _
    "Network Library=dbmssocn;Data Source=servername"

    Set Cn = Server.CreateObject("ADODB.Connection")
    Cn.Open StrConnect
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open "Select * from Users where uid='" & userid & "'",Cn
'Check to see whether this user ID exists in your database.
    If Not Rs.EOF then
        If strcomp( pwd, Rs.Fields("password").value , 1) = 0 then
'Password is correct. Set a session variable, and redirect the user to a Default.asp page
'or the main page in your application.
            Session("UID") = userid
            Response.Redirect "Default.asp"
            Response.End
        Else
'Password is incorrect. Redirect the user to the logon page.
            Response.Redirect "Logon.asp"
            Response.End
        End if
    Else
'If the user is not in your database, point him or her to the Register.asp page
'so that he or she can register at your Web site to access your application.
        Response.Redirect "Register.asp"
        Response.End
    End if
Else
    Response.Redirect "Logon.asp"
    Response.End
End if

%>
				
Register.asp
Bu sayfayı, kullanıcıların kullanıcı KIMLIĞINI ve parolasını sitenize erişebilir kayıt sağlar.

Aşağıdaki kod yeni bir ASP kopyalama sayfası. Bağlantı dizesi parametrelerini değiştirir, böylece bunlar geçerli değerler içerdiğinden. Bağlantı dizesi Parametreler şunlardır:
  • Kullanıcı KIMLIĞI
  • Parola
  • Başlangıç Kataloğu
  • Veri kaynağı
Dosyayı Register.asp Inetpub\Wwwroot dizinin ASPSecureAPP klasörüne kaydedin.
<%
Response.Buffer=true

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

'Check whether user has submitted user name and password so that you can 
'add that user to the users database and register him or her as a valid 
'user to use this application.
'This is just the minimal code that you need. You can customize this the way you want.
Dim pwd
Dim userid

userid = Request.Form("uname")
pwd = Request.Form("pwd")

If userid <> "" then
    If  pwd <> "" then
        Dim Cn
        Dim Rs
        Dim StrConnect

'Specify the connection string to access the database.
'Remember to change the following connection string parameters to reflect the correct values
'for your SQL server.
        StrConnect = "Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;" & _
        "Initial Catalog=pubs;Network Library=dbmssocn;Data Source=servername"

        Set Cn = Server.CreateObject("ADODB.Connection")
        Cn.Open StrConnect
        Set Rs = Server.CreateObject("ADODB.Recordset")
        Rs.Open "Select * from Users where uid='" & userid & "'",Cn,3
        If Rs.RecordCount>0 then
            Response.Write "The Username that you entered has already been taken by someone else."
            Response.Write "Use a different Username."
            Set Rs = Nothing
            Set Cn = Nothing
        Else
            Dim records
            Cn.Execute "INSERT INTO USERS1 (uid,password) VALUES" & _
            "('" & userid & "','" & pwd & "')" , records
            If records=1 then
                Response.Write "You have been registered successfully."
                Set Rs = Nothing
                Set Cn = Nothing
                Session("UID")= userid
                Response.Redirect "Default.asp"
                Response.End 			
            Else
                Response.Write Err.Description
                Set Rs = Nothing
                Set Cn = Nothing
                Response.End 			
            End if
        End if
    Else
    Response.Write "Password is empty. Could not register. Try again."
    End if
End if
%>

<html>
<head>
<script language="javascript">
function callsubmit()
{

if (frm1.pwd.value==frm1.pwdc.value) {
frm1.submit();
}
else
{
alert("Password does not match. Re-enter the password");
}

}
</script>
</head>
<body>
<form action="" method="post" id=frm1 name=frm1>
<P>
Login ID:&#xa0;&#xa0;  <INPUT type=text id=uname  name=uname> <br>
Password:&#xa0;&#xa0;<input type="password" id="pwd" name="pwd"> <br>
Confirm Password:&#xa0;&#xa0;<input type="password" id="pwdc" name="pwdc"> 
</P>
<input type="button" value="Register" id="submit1" name="submit1" onclick=javascript:callsubmit();>
</form>
</body>
</html>
				
Logoff.asp
Bu sayfayı, kullanıcıların oturumu sağlar.

Aşağıdaki kod yeni bir ASP sayfasına kopyalayın. Dosyayı Logoff.asp Inetpub\Wwwroot dizinin ASPSecureAPP klasörüne kaydedin.
<%
Response.Buffer=True

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

'Set the session variable to an empty string and also destroy the session to make
'to complete the user session.
Session("UID")=""
Session.Abandon
Response.Redirect "Logon.asp"
Response.End
%>
				
Default.asp
Oluşturduğunuz diğer sayfalar sınamak için bu sayfayı kullanın.

Aşağıdaki kod yeni bir ASP sayfasına kopyalayın. Dosyayı Default.asp Inetpub\Wwwroot dizinin ASPSecureAPP klasörüne kaydedin.
<%
'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

if session("UID")="" then 
    Response.Redirect "Logon.asp"
    Response.End
else
    Response.Write "You are logged on as " & session("UID") & "<br>"
end if
%>
<HTML>
<BODY>
<A HREF="Logoff.asp">Click here to log off</A>
<BODY>
</HTML>
				

Doğrulama kodu sayfalara ekleyin...

Aşağıdaki kodu, kullanıcı Web sitenize önceden açmış ve henüz açmamış devre dışı olup olmadığını denetler.

Bu kod bloğunu, güvenliğe ASP sayfalarınızı Logon.asp sayfasını ve Validate.asp sayfanın dışında içine kopyalayın. Bu kod, Logon.asp sayfasını veya Validate.asp sayfaya eklemeyin. Bu kod, ilk görünür amacıyla bu kodu, her sayfanın üst yapıştırmak emin olun.
<%
'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

if session("UID")="" then 
    Response.Redirect "Logon.asp"
    Response.End
end if
%>
				

Bu uygulamanın çalışma biçimi

Aslında, bu uygulamanın herkesin kendi kimlik bilgilerini sağlayarak olmadan görüntüleyebileceği iki sayfa (Logon.ASP ve Register.asp) vardır. Kalan sayfaları görüntülemek için <a0></a0>, kullanıcının geçerli bir kullanıcı KIMLIĞI ve parola kullanarak oturum açmalısınız. Bu nedenle, bir kullanıcı doğrudan oturum açma bilgileri gerektiren herhangi bir sayfaya göz attığında, kullanıcı Logon.asp sayfasına yönlendirilir. Kullanıcılar, geçerli bir kullanıcı KIMLIĞI ve Logon.asp sayfasını parolayı sağlamanız gerekir. Parola doğru değil, kullanıcı yeniden oturum açmayı deneyin.

Kullanıcının kullanıcı KIMLIĞINI ve parolasını veritabanınızda yoksa, kullanıcı kullanıcı uygulamanızın kullanmak üzere kaydedebilirsiniz Register.asp sayfasına yönlendirilir. Kullanıcı ayrıntıları, kullanıcıları doğrulamak için kullandığınız kullanıcı veritabanında girildiğinden emin Register.asp aracılığıyla Web sitenize kullanıcı kayıt sayfası açıldığında.

SORUN GİDERME

  • Gereksinimleri ve bu uygulamayı nasıl güvenli durumda bağlı olarak, Güvenli Yuva Katmanı (SSL) şifreleme Logon.ASP kullanıcı kimlik bilgileri düz metin olarak aktarılmasını önlemek için etkinleştirebilirsiniz.
  • Bu kullanıcı hesaplarını Windows hesaplarıyla eşler. Bu nedenle, Windows hesaplarınız için bu uygulamayı oturum açmak için doğrudan kullanamazsınız.
  • Bu güvenlik mekanizması, ASP oturum tabanlı bilgileri kullanır. Bu nedenle, bu mekanizma, tanımlama bilgileri etkinleştirilmiş olan kullanıcılar için çalışmıyor.

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
172138ınternet ınformation Services (IIS) sanal dizin oluşturma
282060ınternet ınformation Services güvenlik altına alma kaynakları
299970IIS 4.0 veya 5.0 çalışan bir Web sayfasını korumak için NTFS izinlerinin nasıl kullanılır

Özellikler

Makale numarası: 299987 - Last Review: 16 Haziran 2006 Cuma - Gözden geçirme: 4.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Active Server Pages 4.0
Anahtar Kelimeler: 
kbmt kbaspobj kbdatabase kbhowtomaster kbsecurity KB299987 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:299987
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com