Cara menggunakan database dan ASP sesi untuk menerapkan ASP keamanan

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 299987 - Melihat produk di mana artikel ini berlaku.
Pemberitahuan
Kami sangat merekomendasikan bahwa semua pengguna meng-upgrade ke Microsoft Internet Information Services (IIS) versi 6.0 berjalan pada Microsoft Windows Server 2003. IIS 6.0 secara signifikan meningkatkan Web infrastruktur keamanan. Untuk informasi lebih lanjut tentang IIS terkait keamanan topik, kunjungi Web site Microsoft berikut:
http://www.Microsoft.com/technet/security/prodtech/IIS.mspx
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini membahas bagaimana menerapkan berbasis bentuk keamanan untuk aplikasi Active Server Pages (ASP). Anda dapat menggunakan mekanisme ini ketika aplikasi Anda adalah keamanan yang ditingkatkan atau bila Anda ingin memungkinkan hanya pengguna keasliannya. Anda juga dapat menggunakan mekanisme ini ketika pengguna bukan merupakan bagian dari internal domain, seperti pengguna Internet. Sampel ini menggunakan database untuk menyimpan pengguna' informasi dan kemudian memvalidasi pengguna terhadap ini database.

Prasyarat

  • Microsoft Windows NT 4.0 Workstation, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, atau Microsoft Windows Server 2003
  • Microsoft Internet Information Server (IIS) 4.0 untuk komputer yang menjalankan Windows NT 4.0, Microsoft Internet Information Services (IIS) 5.0 untuk komputer yang menjalankan Windows 2000, atau Microsoft Internet Information Services (IIS) 6.0 untuk komputer yang menjalankan Windows Server 2003
  • Microsoft SQL Server 6,5 atau versi SQL Server

Bagaimana untuk merancang aplikasi ini

Bagian ini secara singkat mencantumkan langkah-langkah yang diperlukan untuk menerapkan berbasis bentuk keamanan atau keamanan kustom pada aplikasi ASP Web Anda:
  1. Hadir bentuk logon untuk pengguna.
  2. Memvalidasi kredensial pengguna terhadap informasi pengguna yang disimpan dalam database pengguna Anda.
  3. Membuat variabel sesi dan set nilai ID pengguna.
  4. Untuk setiap permintaan berikutnya pengguna membuat, mengkonfirmasi nilai variabel sesi ini tidak sama dengan string kosong ("") untuk mengkonfirmasi bahwa pengguna telah masuk.
  5. Jika variabel kosong, baik pengguna adalah tidak sah pengguna atau pengguna telah log dari sesi. Mengarahkan ulang pengguna untuk Halaman logon jika variabel kosong.
  6. Jika log pada gagal karena pengguna tidak ada dalam Anda database, pengguna tidak dapat terdaftar di situs Anda belum. Mengarahkan ulang pengguna untuk Register.asp halaman sehingga pengguna dapat mendaftar di situs Anda. Kapan Register pengguna, pengguna tersebut rincian ditambahkan ke pengguna database.
  7. Memberikan link untuk log off halaman pada semua halaman kecuali halaman logon sehingga pengguna dapat log off dari sesi. Halaman ini membersihkan variabel sesi yang memegang ID pengguna oleh menetapkan string kosong ("").

Membuat tabel database pengguna

  1. Klik Mulai, klik Menjalankan, jenis Notepad dalam Terbuka kotak, dan kemudian tekan ENTER untuk mulai Notepad.
  2. Sorot skrip SQL berikut, klik kanan script, kemudian klik Salin. Dalam Notepad, klik Pasta pada Mengedit menu.
    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. Pada Berkas menu, klik Simpan. Dalam Nama file kotak, jenis User.txt.
  4. Klik Mulai, arahkan ke Program, arahkan ke Microsoft SQL Server, lalu klik Permintaan Analyzer. Dalam Menghubungkan ke SQL Server dialog kotak, tentukan nama server yang menjalankan SQL Server, ID pengguna dan sandi untuk menghubungkan ke SQL Server.
  5. Pada Berkas menu, klik Terbuka. Dalam Terbuka kotak dialog, klik Semua file (*. *) dalam Tipe file kotak. Klik User.txt dalam daftar, dan kemudian klik Terbuka.
  6. Dalam DB kotak pada toolbar, pilih database di mana Anda ingin membuat tabel ini. Jika Anda tidak memiliki tertentu database untuk tujuan ini, klik Pub membuat tabel ini di database Pub sampel.
  7. Setelah Anda memilih database, klik Melaksanakan pada Permintaan menu untuk menjalankan query. Langkah ini menciptakan tabel pengguna dalam pilihan database.

Membuat dan mengkonfigurasi direktori virtual

  1. Di Windows Explorer, membuat folder di bawah Web root. Secara default, Web root adalah SystemDrive: \Inetpub\Wwwroot. Nama map ASPSecureAPP.
  2. Buka Internet Services Manager Microsoft Management Console (MMC).

    Catatan Pada Windows NT 4.0, MMC ini dinamakan Internet Service Manager.
    • Untuk membuka Manajer Layanan Internet di komputer yang menjalankan Windows 2000 atau Windows Server 2003, klik Mulai, klik Menjalankan, jenis inetmgr dalam Terbuka kotak, dan kemudian tekan ENTER.
    • Untuk membuka Internet Service Manager pada komputer yang menjalankan Windows NT 4.0, ikuti langkah berikut:
      1. Klik Mulai, arahkan ke Program, arahkan ke Windows NT 4.0 Option Pack, lalu klik Microsoft Internet Information Server.
      2. Klik Internet Service Manager.
  3. Memperluas Mesin, dan kemudian memperluas Situs Web standar. Klik kanan ASPSecureAPP folder yang Anda buat di Langkah 1, dan kemudian klik Properti.
  4. Pada Direktori tab di Properti kotak dialog, klik Buat dalam Pengaturan aplikasi bagian untuk menandai direktori sebagai aplikasi.

Membuat halaman sampel

Catatan Jika Anda menggunakan Notepad untuk membuat halaman ini, pastikan bahwa Anda klik Semua file dalam Simpan sebagai jenis kotak Simpan sebagai kotak dialog saat Anda menyimpan file.
Logon.asp
Halaman ini memungkinkan pengguna mengetik nama pengguna dan sandi untuk mengakses situs Anda.

Salin kode berikut ke Halaman ASP baru. Simpan berkas sebagai Logon.asp dalam ASPSecureAPP folder Inetpub\Wwwroot direktori.
<%
'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
Setelah pengguna memberikan nya informasi logon untuk log on ke aplikasi Anda, Halaman ini memvalidasi informasi pengguna dan kemudian mengarahkan ulang pengguna ke halaman yang sesuai.

Salin kode berikut ke ASP baru Halaman. Mengubah parameter string connect sehingga mereka mengandung nilai yang valid. Parameter string connect adalah sebagai berikut:
  • ID pengguna
  • Sandi
  • Awal katalog
  • Sumber data
Simpan berkas sebagai Validate.asp dalam folder ASPSecureAPP direktori Inetpub\Wwwroot.
<%
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
Halaman ini memungkinkan pengguna mendaftar ID pengguna mereka dan password untuk mengakses situs Anda.

Salin kode berikut ke ASP baru Halaman. Mengubah parameter string connect sehingga mereka mengandung nilai yang valid. Parameter string connect adalah sebagai berikut:
  • ID pengguna
  • Sandi
  • Awal katalog
  • Sumber data
Simpan berkas sebagai Register.asp dalam folder ASPSecureAPP direktori Inetpub\Wwwroot.
<%
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
Halaman ini memungkinkan pengguna logoff.

Salinan kode berikut ke dalam halaman ASP baru. Simpan berkas sebagai Logoff.asp di ASPSecureAPP folder direktori Inetpub\Wwwroot.
<%
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
Anda dapat menggunakan halaman ini untuk menguji yang lain Halaman yang Anda buat.

Salin kode berikut ke dalam halaman ASP baru. Menyimpan file sebagai Default.asp dalam folder ASPSecureAPP direktori Inetpub\Wwwroot.
<%
'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>
				

Menambahkan validasi kode ke halaman

Kode berikut akan memeriksa apakah pengguna sudah login situs web Anda dan telah tidak login belum.

Menyalin blok kode ini ke setiap laman ASP aman kecuali Logon.asp halaman dan halaman Validate.asp. Tidak menambahkan kode ini ke halaman Logon.asp atau halaman Validate.asp. Pastikan bahwa Anda menyisipkan kode ini di bagian atas setiap halaman sehingga kode ini muncul pertama.
<%
'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
%>
				

Bagaimana aplikasi ini bekerja

Pada dasarnya, aplikasi ini memiliki dua halaman (Logon.asp dan Register.asp) bahwa siapa pun dapat melihat tanpa memasok identitasnya. Untuk melihat seluruh halaman, pengguna harus logon dengan menggunakan valid user ID dan password. Oleh karena itu, ketika pengguna langsung menelusuri untuk setiap halaman yang memerlukan logon informasi, pengguna akan diarahkan ke halaman Logon.asp. Pengguna harus memberikan valid user ID dan password di halaman Logon.asp. Jika sandi salah, pengguna dapat mencoba untuk logon lagi.

Jika pengguna user ID dan password tidak ada di database Anda, pengguna dialihkan ke Register.asp halaman di mana pengguna dapat mendaftar untuk menggunakan Anda aplikasi. Ketika pengguna mendaftar di situs Web Anda melalui Register.asp Halaman, bahwa pengguna rincian yang dimasukkan dalam database pengguna bahwa Anda menggunakan untuk memvalidasi pengguna.

Pemecahan Masalah

  • Berdasarkan persyaratan dan bagaimana aman aplikasi ini adalah, Anda dapat mengaktifkan Secure Sockets Layer (SSL) enkripsi pada Logon.asp untuk menghindari mentransfer kredensial pengguna dalam bentuk teks.
  • Account pengguna tidak peta untuk account Windows. Oleh karena itu, Anda tidak dapat langsung menggunakan account Windows untuk masuk ke ini aplikasi.
  • Mekanisme keamanan ini menggunakan berbasis sesi ASP informasi. Oleh karena itu, mekanisme ini tidak bekerja untuk pengguna yang tidak memiliki mengaktifkan cookie.

REFERENSI

Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
172138Cara membuat direktori virtual di Internet Information Services (IIS)
282060 Sumber daya untuk mengamankan Internet Information Services
299970 Cara menggunakan NTFS izin untuk melindungi halaman Web yang berjalan di IIS 4.0 atau 5.0

Properti

ID Artikel: 299987 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Active Server Pages 4.0
Kata kunci: 
kbaspobj kbdatabase kbhowtomaster kbsecurity kbmt KB299987 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:299987
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

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