Làm th? nào đ? s? d?ng cơ s? d? li?u và các ASP bu?i đ? th?c hi?n an ninh ASP

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 299987 - Xem s?n ph?m mà bài này áp d?ng vào.
Chú ?
Chúng tôi đ? ngh? r?ng t?t c? ngư?i dùng nâng c?p đ? Microsoft Internet Information Services (IIS) Phiên b?n 6.0 ch?y trên Microsoft Windows Server 2003. IIS 6.0 làm tăng đáng k? Web an ninh cơ s? h? t?ng. Đ? bi?t thêm v? IIS an ninh liên quan các ch? đ?, ghé thăm Web site sau c?a Microsoft:
http://www.Microsoft.com/technet/Security/prodtech/IIS.mspx
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t-by-step này th?o lu?n v? cách th?c hi?n d?a trên các h?nh th?c b?o m?t cho các ?ng d?ng Active Server Pages (ASP). B?n có th? s? d?ng cơ ch? này khi đơn c?a b?n là b?o m?t nâng cao, ho?c khi b?n mu?n đ? cho phép ch? xác th?c ngư?i dùng. B?n c?ng có th? s? d?ng cơ ch? này khi ngư?i dùng không ph?i là m?t ph?n c?a tên mi?n n?i b? c?a b?n, ch?ng h?n như ngư?i s? d?ng Internet. M?u này s? d?ng cơ s? d? li?u đ? lưu tr? nh?ng ngư?i s? d?ng thông tin và sau đó xác nh?n nh?ng ngư?i s? d?ng ch?ng l?i đi?u này cơ s? d? li?u.

Điều kiện tiên quyết

  • Máy tr?m Microsoft Windows NT 4.0, Windows NT 4.0 H? ph?c v?, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Microsoft Windows Server 2003
  • Microsoft thông tin ph?c v? Internet (IIS) 4,0 cho máy tính đang ch?y Windows NT 4.0, Internet c?a Microsoft Information Services (IIS) 5.0 cho máy tính ch?y Windows 2000, ho?c Microsoft Internet Information Services (IIS) 6.0 cho máy tính đang ch?y Windows Server 2003
  • Microsoft SQL Server 6,5 ho?c m?t phiên b?n sau này c?a SQL Server

Làm th? nào đ? thi?t k? ?ng d?ng này

Ph?n này m?t th?i gian ng?n v?ch ra các bư?c đư?c yêu c?u ph?i th?c hi?n d?a trên các h?nh th?c b?o m?t ho?c b?o m?t tu? ch?nh trên ?ng d?ng ASP Web c?a b?n:
  1. Hi?n nay m?t h?nh th?c đăng nh?p cho ngư?i dùng.
  2. Soát h?p th?c ch?ng ch? ngư?i dùng đ?i v?i thông tin ngư?i dùng mà đư?c lưu tr? trong cơ s? d? li?u ngư?i dùng c?a b?n.
  3. T?o ra m?t bi?n phiên làm vi?c và đ?t giá tr? c?a nó các ngư?i dùng c?a b?n.
  4. Đ?i v?i m?i yêu c?u ti?p theo mà làm cho ngư?i s? d?ng, xác nh?n giá tr? c?a bi?n phiên giao d?ch này không ph?i là tương đương v?i m?t chu?i r?ng ("") đ? xác nh?n ngư?i dùng đ? đăng nh?p vào.
  5. N?u bi?n là tr?ng r?ng, ho?c ngư?i s? d?ng không ph?i là m?t h?p l? ngư?i dùng ho?c ngư?i dùng đ? đăng xu?t t? phiên giao d?ch. Chuy?n hư?ng ngư?i dùng đ?n các đăng nh?p trang n?u bi?n là có s?n ph?m nào.
  6. N?u các b?n ghi trên không b?i v? ngư?i dùng không t?n t?i trong c?a b?n cơ s? d? li?u, ngư?i dùng có th? không đư?c đăng k? t?i trang web c?a b?n đư?c nêu ra. Chuy?n hư?ng ngư?i dùng Register.asp trang do đó ngư?i dùng có th? đăng k? t?i trang web c?a b?n. Khi ngư?i dùng đăng k?, ngư?i s? d?ng chi ti?t đư?c thêm vào cho ngư?i dùng cơ s? d? li?u.
  7. Cung c?p m?t liên k?t đ? đăng nh?p t?t trang trên t?t c? các trang ngo?i tr? các trang đăng nh?p v? v?y mà ngư?i dùng có th? đăng xu?t t? các Phiên làm vi?c. Trang này xóa bi?n phiên giao d?ch đó là gi? ID ngư?i s? d?ng b?i cách gán cho nó m?t chu?i r?ng ("").

T?o ra m?t b?ng cơ s? d? li?u ngư?i dùng

  1. Nh?p vào B?t đ?u, b?m Ch?y, lo?i Notepad trong các M? h?p, và sau đó nh?n ENTER đ? b?t đ?u Notepad.
  2. H?y ch?n các đo?n m? SQL sau đây, b?m chu?t ph?i vào đo?n m?, sau đó b?m Sao. Trong Notepad, nh?p vào Dán trên các Ch?nh s?a tr?nh đơ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. Trên các Tệp tr?nh đơn, nh?p vào Lưu. Trong các Tên tệp h?p, lo?i User.txt.
  4. Nh?p vào B?t đ?u, đi?m đ?n Chương tr?nh, đi?m đ?n Microsoft SQL Server, sau đó b?m Truy v?n Analyzer. Trong các K?t n?i v?i SQL Server h?p tho?i h?p, ch? ra tên máy ch? đang ch?y SQL Server, ngư?i s? d?ng ID và m?t kh?u đ? k?t n?i v?i SQL Server.
  5. Trên các Tệp tr?nh đơn, nh?p vào M?. Trong các M? h?p tho?i h?p, b?m vào T?t c? các file (*. *) trong các Lo?i t?p h?p. Nh?p vào User.txt trong danh sách, và sau đó nh?p vào M?.
  6. Trong các DB h?p trên thanh công c?, ch?n cơ s? d? li?u mà b?n mu?n t?o b?ng này. N?u b?n không có m?t c? th? cơ s? d? li?u cho m?c đích này, b?m vào Quán rư?u đ? t?o ra b?ng này trong cơ s? d? li?u quán rư?u m?u.
  7. Sau khi b?n ch?n cơ s? d? li?u, b?m Th?c thi trên các Truy vấn Menu đ? ch?y truy v?n. Bư?c này t?o ra m?t b?ng ngư?i dùng trong các l?a ch?n cơ s? d? li?u.

T?o và đ?t c?u h?nh các thư m?c ?o

  1. Trong Windows Explorer, t?o m?t thư m?c Theo trang Web g?c. Theo m?c đ?nh, trang Web g?c là SystemDrive: \Inetpub\Wwwroot. Tên c?p ASPSecureAPP.
  2. M? Internet d?ch v? qu?n l? Microsoft Management Console (MMC).

    Chú ý Trong Windows NT 4.0, MMC này đư?c đ?t tên theo b? d?ch v? Internet.
    • Đ? m? tr?nh qu?n l? d?ch v? Internet trên m?t máy tính đang ch?y Windows 2000 ho?c Windows Server 2003, b?m B?t đ?u, b?m Ch?y, lo?i inetmgr trong các M? h?p, và sau đó nh?n ENTER.
    • Đ? m? tr?nh qu?n l? d?ch v? Internet trên máy tính là ch?y Windows NT 4.0, h?y làm theo các bư?c sau:
      1. Nh?p vào B?t đ?u, đi?m đ?n Chương tr?nh, đi?m đ?n Windows NT 4.0 tùy ch?n Pack, sau đó b?m Máy ch? thông tin Internet c?a Microsoft.
      2. Nh?p vào Qu?n l? d?ch v? Internet.
  3. M? r?ng Máy, và sau đó m? r?ng Trang Web m?c đ?nh. Nh?p chu?t ph?i vào các ASPSecureAPP thư m?c mà b?n t?o ra trong Bư?c 1, và sau đó nh?p vào Thu?c tính.
  4. Trên các Thư mục th? tab trong các Thu?c tính h?p tho?i h?p, b?m vào Tạo trong các Thi?t đ?t ?ng d?ng ph?n đ? đánh d?u các thư m?c như m?t ?ng d?ng.

T?o các trang m?u

Chú ý N?u b?n s? d?ng Notepad đ? t?o ra các trang này, h?y ch?c ch?n r?ng b?n b?m T?t c? các t?p trong các Lưu như ki?u h?p c?a các Löu laøm h?p tho?i khi b?n lưu các t?p tin.
Logon.asp
Trang này cho phép ngư?i dùng nh?p tên ngư?i dùng và m?t kh?u đ? truy c?p vào trang web c?a b?n c?a h?.

Copy đo?n m? sau vào m?t Trang ASP m?i. Lưu t?p tin như Logon.asp trong thư m?c ASPSecureAPP c?a các Inetpub\Wwwroot thư m?c.
<%
'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
Sau khi ngư?i s? d?ng cung c?p thông tin đăng nh?p c?a m?nh đ? đăng nh?p vào ?ng d?ng c?a b?n, Trang này xác nh?n thông tin ngư?i dùng và sau đó chuy?n hư?ng ngư?i dùng đ?n trang thích h?p.

Copy đo?n m? sau vào m?t ASP m?i Trang. Thay đ?i các tham s? chu?i k?t n?i đ? h? có ch?a giá tr? h?p l?. Các tham s? chu?i k?t n?i nhö sau:
  • Ngư?i s? d?ng ID
  • M?t kh?u
  • Ban đ?u danh m?c
  • Ngu?n d? li?u
Lưu các t?p tin như Validate.asp trong thư m?c ASPSecureAPP c?a thư m?c 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
Trang này cho phép ngư?i dùng đăng k? ID ngư?i dùng c?a h? và m?t kh?u đ? truy c?p vào trang web c?a b?n.

Copy đo?n m? sau vào m?t ASP m?i Trang. Thay đ?i các tham s? chu?i k?t n?i đ? h? có ch?a giá tr? h?p l?. Các tham s? chu?i k?t n?i nhö sau:
  • Ngư?i s? d?ng ID
  • M?t kh?u
  • Ban đ?u danh m?c
  • Ngu?n d? li?u
Lưu các t?p tin như Register.asp trong thư m?c ASPSecureAPP c?a thư m?c 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
Trang này cho phép ngư?i dùng đăng xu?t.

Sao chép các m? sau vào trang ASP m?i. Lưu t?p tin như Logoff.asp trong các ASPSecureAPP thư m?c c?a thư m?c 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
B?n có th? s? d?ng trang này đ? ki?m tra khác các trang mà b?n đ? t?o ra.

Copy đo?n m? sau vào trang ASP m?i. Lưu t?p như Default.asp trong thư m?c ASPSecureAPP c?a thư m?c 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>
				

Thêm xác nh?n m? cho các trang

M? sau s? ki?m tra xem ngư?i s? d?ng đ? đ? đăng nh?p vào đ? trang Web c?a b?n và đ? không đăng xu?t đư?c.

B?n sao này kh?i m? vào m?i trang web c?a b?n tăng cư?ng b?o m?t ASP ngo?i tr? trang Logon.asp và trang Validate.asp. Không thêm m? này vào trang Logon.asp ho?c vào trang Validate.asp. H?y ch?c ch?n r?ng b?n dán m? này ? đ?u m?i trang do đó m? này xu?t hi?n đ?u tiên.
<%
'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
%>
				

Cách th?c ho?t đ?ng c?a ?ng d?ng này

V? b?n ch?t, ?ng d?ng này có hai trang (Logon.asp và Register.asp) r?ng b?t c? ai có th? xem mà không c?n cung c?p thông tin đăng nh?p c?a h?. Xem ph?n c?n l?i c?a các trang này, ngư?i dùng ph?i đăng nh?p b?ng cách s? d?ng m?t ID h?p l? ngư?i dùng và m?t kh?u. V? v?y, khi m?t ngư?i s? d?ng tr?c ti?p duy?t t?i b?t k? trang nào có yêu c?u đăng nh?p thông tin, ngư?i dùng đư?c chuy?n đ?n trang Logon.asp. Nh?ng ngư?i s? d?ng ph?i cung c?p m?t ngư?i dùng h?p l? ID và m?t kh?u trong trang Logon.asp. N?u m?t kh?u không đúng, ngư?i s? d?ng có th? c? g?ng đăng nh?p l?i.

N?u ngư?i s? d?ng ID và m?t kh?u c?a ngư?i dùng không t?n t?i trong cơ s? d? li?u c?a b?n, ngư?i s? d?ng đư?c chuy?n hư?ng đ?n trang Register.asp nơi ngư?i dùng có th? đăng k? s? d?ng c?a b?n ?ng d?ng. Khi ngư?i dùng đăng k? t?i trang Web c?a b?n thông qua Register.asp Trang, r?ng thông tin chi ti?t c?a ngư?i dùng đư?c nh?p trong cơ s? d? li?u ngư?i dùng mà b?n đang s? d?ng đ? xác nh?n nh?ng ngư?i s? d?ng.

Khắc phục sự cố

  • D?a trên các yêu c?u và làm th? nào secure ?ng d?ng này là, b?n có th? b?t Secure Sockets Layer (SSL) m? hóa trên Logon.asp đ? tránh chuy?n các ch?ng ch? ngư?i dùng trong văn b?n r? ràng.
  • Các tài kho?n ngư?i dùng không ánh x? vào trương m?c Windows. V? v?y, b?n không th? tr?c ti?p s? d?ng các tài kho?n Windows c?a b?n đ? đăng nh?p vào đây ?ng d?ng.
  • Cơ ch? b?o m?t này s? d?ng ASP phiên làm vi?c d?a trên thông tin. V? v?y, cơ ch? này không ho?t đ?ng cho ngư?i s? d?ng không có b?t cookie.

THAM KH?O

Đ? bi?t thêm chi ti?t, nh?p vào s? bài vi?t sau đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
172138Làm th? nào đ? t?o m?t thư m?c ?o trong Internet Information Services (IIS)
282060 Tài nguyên cho b?o v? Internet Information Services
299970 Làm th? nào đ? s? d?ng quy?n truy c?p NTFS đ? b?o v? m?t trang Web ch?y trên IIS 4.0 ho?c 5,0

Thu?c tính

ID c?a bài: 299987 - L?n xem xét sau cùng: 26 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Active Server Pages 4.0
T? khóa: 
kbaspobj kbdatabase kbhowtomaster kbsecurity kbmt KB299987 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:299987
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

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