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:
- Hadir bentuk logon untuk pengguna.
- Memvalidasi kredensial pengguna terhadap informasi pengguna
yang disimpan dalam database pengguna Anda.
- Membuat variabel sesi dan set nilai
ID pengguna.
- Untuk setiap permintaan berikutnya pengguna membuat, mengkonfirmasi
nilai variabel sesi ini tidak sama dengan string kosong ("") untuk
mengkonfirmasi bahwa pengguna telah masuk.
- Jika variabel kosong, baik pengguna adalah tidak sah
pengguna atau pengguna telah log dari sesi. Mengarahkan ulang pengguna untuk
Halaman logon jika variabel kosong.
- 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.
- 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
- Klik Mulai, klik Menjalankan, jenis Notepad dalam Terbuka kotak, dan kemudian tekan ENTER untuk mulai
Notepad.
- 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
- Pada Berkas menu, klik Simpan. Dalam Nama file kotak, jenis User.txt.
- 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.
- 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.
- 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.
- 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
- Di Windows Explorer, membuat folder
di bawah Web root. Secara default, Web root adalah SystemDrive: \Inetpub\Wwwroot. Nama map ASPSecureAPP.
- 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:
- Klik Mulai, arahkan ke Program, arahkan ke Windows NT 4.0 Option Pack, lalu klik Microsoft Internet Information Server.
- Klik Internet Service Manager.
- Memperluas Mesin, dan kemudian memperluas Situs Web standar. Klik kanan ASPSecureAPP folder yang Anda buat di
Langkah 1, dan kemudian klik Properti.
- 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:   <INPUT type=text id=UID name=UID> <br>
Password:  <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:   <INPUT type=text id=uname name=uname> <br>
Password:  <input type="password" id="pwd" name="pwd"> <br>
Confirm Password:  <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.
Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
172138
(http://support.microsoft.com/kb/172138/
)
Cara membuat direktori virtual di Internet Information Services (IIS)
282060
(http://support.microsoft.com/kb/282060/
)
Sumber daya untuk mengamankan Internet Information Services
299970
(http://support.microsoft.com/kb/299970/
)
Cara menggunakan NTFS izin untuk melindungi halaman Web yang berjalan di IIS 4.0 atau 5.0