วิธีการใช้ฐานข้อมูลและเซสชัน ASP ใช้การรักษาความปลอดภัย ASP

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:299987
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก
หมายเหตุ
เราขอแนะนำให้ ผู้ใช้ทั้งหมดปรับรุ่นไปยัง Microsoft ข้อมูลบริการทางอินเทอร์เน็ต (IIS) รุ่น 6.0 ทำงานบน Microsoft Windows Server 2003 IIS 6.0 เพิ่มเว็บมากความปลอดภัยของโครงสร้างพื้นฐาน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อที่เกี่ยวข้องกับการรักษาความปลอดภัย IIS แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:
สรุป
บทความนี้ทีละขั้นตอนเกี่ยวกับวิธีการใช้ตามรูปแบบการรักษาความปลอดภัยสำหรับโปรแกรมประยุกต์ Active Server หน้า (ASP) คุณสามารถใช้กลไกการนี้ เมื่อโปรแกรมประยุกต์ของคุณมีการรักษาความปลอดภัยขั้นสูง หรือ เมื่อคุณต้องการอนุญาตให้ผู้ใช้ authenticated เท่านั้น คุณยังสามารถใช้กลไกการนี้เมื่อผู้ใช้ที่ไม่ใช่ส่วนหนึ่งของเมนของคุณภายใน เช่นผู้ใช้อินเทอร์เน็ต ตัวอย่างนี้ใช้ฐานข้อมูลการจัดเก็บข้อมูลของผู้ใช้ และ validates ผู้ใช้กับฐานข้อมูลนี้แล้ว

ข้อกำหนดเบื้องต้น

  • เวิร์กสเตชันของ Microsoft Windows NT 4.0, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 ขั้นสูงเซิร์ฟเวอร์ หรือ Microsoft Windows Server 2003
  • Microsoft ข้อมูลทางอินเทอร์เน็ต Server (IIS) 4.0 สำหรับคอมพิวเตอร์ที่รัน Windows NT 4.0, Microsoft ข้อมูลบริการทางอินเทอร์เน็ต (IIS) 5.0 สำหรับคอมพิวเตอร์ที่รัน Windows 2000 หรือ Microsoft ข้อมูลบริการทางอินเทอร์เน็ต (IIS) 6.0 สำหรับคอมพิวเตอร์ที่กำลังเรียกใช้ Windows Server 2003
  • 6.5 เซิร์ฟเวอร์ SQL ของ Microsoft หรือรุ่นที่ใหม่กว่าของ SQL Server

วิธีการออกแบบโปรแกรมประยุกต์นี้

ส่วนนี้อธิบายสั้น ๆ แสดงขั้นตอนที่จำเป็นต้องใช้ความปลอดภัยที่มีใช้แบบฟอร์มหรือการรักษาความปลอดภัยที่กำหนดเองบนโปรแกรมประยุกต์ ASP เว็บของคุณ:
  1. แสดงแบบฟอร์มการเข้าสู่ระบบไปยังผู้ใช้
  2. ตรวจสอบข้อมูลประจำตัวของผู้ใช้กับข้อมูลของผู้ใช้ที่เก็บอยู่ในฐานข้อมูลผู้ใช้ของคุณ
  3. สร้างตัวแปรเซสชัน และกำหนดค่าของ id ผู้ใช้
  4. การร้องขอทั้งหมดในลำดับต่อมาที่ทำให้ผู้ใช้ ยืนยันว่า ค่าของตัวแปรเซสชันนี้ไม่เท่ากับเป็นสตริงว่าง ("") เพื่อยืนยันว่า ผู้ใช้ได้เข้าสู่ระบบใน
  5. ถ้าตัวแปรว่างเปล่า เป็นผู้ใช้ไม่ใช่ผู้ใช้ที่ถูกต้อง หรือมีล็อกผู้ใช้ออกจากเซสชัน เปลี่ยนเส้นทางผู้ใช้ไปยังหน้าการเข้าสู่ระบบถ้าตัวแปรว่างเปล่า
  6. ถ้าบันทึกบนล้มเหลวเนื่องจากผู้ใช้ไม่ได้อยู่ในฐานข้อมูลของคุณ ผู้ใช้อาจไม่สามารถลงทะเบียนที่ไซต์ของคุณได้ เปลี่ยนเส้นทางผู้ใช้ไปยังเพจการ Register.asp เพื่อให้ผู้ใช้สามารถลงทะเบียนไซต์ของคุณ เมื่อผู้ใช้ที่ลงทะเบียน มีเพิ่มรายละเอียดของผู้ใช้เหล่านั้นไปยังฐานข้อมูลผู้ใช้
  7. ให้การเชื่อมโยงไปยังล็อกออกจากหน้าบนหน้าทั้งหมดยกเว้นหน้าการเข้าสู่ระบบเพื่อให้ผู้ใช้สามารถออกจากระบบเซสชัน เพจนี้ล้างตัวแปรเซสชันที่ถูกเก็บ ID ผู้ใช้ โดยการกำหนดให้เป็นสตริงว่าง ("")

สร้างตารางฐานข้อมูลผู้ใช้

  1. คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:notepadในการOPENกล่อง และกด enter เพื่อเริ่มการทำงานของแผ่นจดบันทึก
  2. เน้นสคริปต์ SQL ต่อไปนี้ คลิ๊กสคริปต์ แล้วก็ คลิ๊กCopy. ใน Notepad คลิกวางในการแก้ไขเมนู
    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. ในการแฟ้ม:เมนู คลิกบันทึก. ในการชื่อแฟ้มกล่อง ชนิดUser.txt.
  4. คลิกเริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่Microsoft SQL Serverแล้ว คลิกตัววิเคราะห์แบบสอบถาม. ในการเชื่อมต่อกับ SQL Serverกล่องโต้ตอบกล่อง ระบุชื่อของเซิร์ฟเวอร์ที่รัน SQL Server, ID ผู้ใช้ และรหัสผ่านการเชื่อมต่อกับ SQL Server
  5. ในการแฟ้ม:เมนู คลิกOPEN. ในการOPENกล่องโต้ตอบ คลิกแฟ้มทั้งหมด (* *)ในการชนิดแฟ้มกล่อง คลิกUser.txtในรายการ แล้วคลิกOPEN.
  6. ในการdbกล่องบนแถบเครื่องมือ เลือกฐานข้อมูลคุณต้องการสร้างตารางนี้ ถ้าคุณไม่มีฐานข้อมูลที่ระบุสำหรับวัตถุประสงค์นี้ คลิกpubsเมื่อต้องการสร้างตารางนี้ในฐานข้อมูลตัวอย่าง Pubs
  7. หลังจากที่คุณเลือกฐานข้อมูล คลิกดำเนินการในการแบบสอบถามเมนูการรันการสอบถาม ขั้นตอนนี้สร้างตารางของผู้ใช้ในฐานข้อมูลที่เลือก

สร้าง และกำหนดค่าไดเรกทอรีเสมือน

  1. ใน Windows Explorer การสร้างโฟลเดอร์ภายใต้เว็บราก โดยค่าเริ่มต้น เว็บรากได้systemdrive: \Inetpub\Wwwroot ชื่อโฟลเดอร์ ASPSecureAPP
  2. เปิดการอินเทอร์เน็ตบริการ'ตัวจัดการ' Microsoft คอนโซลการจัดการ (MMC)

    หมายเหตุ:ใน Windows NT 4.0, MMC นี้มีชื่อตัวจัดการบริการอินเทอร์เน็ต
    • เมื่อต้องการเปิดโปรแกรมจัดการบริการอินเทอร์เน็ตบนคอมพิวเตอร์ที่ใช้ Windows 2000 หรือ Windows Server 2003 คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:inetmgrในการOPENกล่อง และกด enter
    • เมื่อต้องการเปิดตัวจัดการบริการอินเทอร์เน็ตบนคอมพิวเตอร์ที่ใช้ Windows NT 4.0 ดำเนินการดังต่อไปนี้:
      1. คลิกเริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่ชุดตัวเลือกของ windows NT 4.0แล้ว คลิกเซิร์ฟเวอร์ข้อมูลทางอินเทอร์เน็ตของ Microsoft.
      2. คลิกโปรแกรมจัดการบริการทางอินเทอร์เน็ต.
  3. ขยายMachine :แล้ว ขยายเว็บไซต์ที่มีค่าเริ่มต้น. คลิกขวาASPSecureAPPโฟลเดอร์ ที่คุณสร้างในขั้นตอนที่ 1 แล้ว คลิกคุณสมบัติ.
  4. ในการไดเรกทอรีแท็บในนั้นคุณสมบัติกล่องโต้ตอบ คลิกสร้างในการการตั้งค่าโปรแกรมประยุกต์ส่วนการทำเครื่องหมายในไดเรกทอรีเป็นโปรแกรมประยุกต์

Create the sample pages

หมายเหตุ:If you use Notepad to create these pages, make sure that you clickAll Filesในการบันทึกเป็นชนิดกล่องนี้บันทึกเป็นdialog box when you save the files.
Logon.asp
This page lets users type their user name and password to access your site.

Copy the following code into a new ASP page. Save the file as Logon.asp in the ASPSecureAPP folder of the Inetpub\Wwwroot directory.
<%'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
After the user provides his or her logon information to log on to your application, this page validates the user information and then redirects the user to the appropriate page.

Copy the following code into a new ASP page. Change the connect string parameters so that they contain valid values. The connect string parameters are the following:
  • ID ผู้ใช้
  • รหัสผ่าน:
  • Initial Catalog
  • Data Source
Save the file as Validate.asp in the ASPSecureAPP folder of the Inetpub\Wwwroot directory.
<%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 = -1Dim useridDim 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 ifElse    Response.Redirect "Logon.asp"    Response.EndEnd if%>				
Register.asp
This page lets users register their user ID and password to access your site.

Copy the following code into a new ASP page. Change the connect string parameters so that they contain valid values. The connect string parameters are the following:
  • ID ผู้ใช้
  • รหัสผ่าน:
  • Initial Catalog
  • Data Source
Save the file as Register.asp in the ASPSecureAPP folder of the Inetpub\Wwwroot directory.
<%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 pwdDim useriduserid = 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 ifEnd 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
This page lets users log off.

Copy the following code into a new ASP page. Save the file as Logoff.asp in the ASPSecureAPP folder of the Inetpub\Wwwroot directory.
<%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.AbandonResponse.Redirect "Logon.asp"Response.End%>				
Default.asp
You can use this page to test the other pages that you have created.

Copy the following code into a new ASP page. Save the file as Default.asp in the ASPSecureAPP folder of the Inetpub\Wwwroot directory.
<%'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 = -1if session("UID")="" then     Response.Redirect "Logon.asp"    Response.Endelse    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>				

Add validation code to pages

The following code checks whether the user has already logged on to your Web site and has not logged off yet.

Copy this block of code into each of your security-enhanced ASP pages except the Logon.asp page and the Validate.asp page. Do not add this code to the Logon.asp page or to the Validate.asp page. Make sure that you paste this code at the top of each page so that this code appears first.
<%'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 = -1if session("UID")="" then     Response.Redirect "Logon.asp"    Response.Endend if%>				

How this application works

Essentially, this application has two pages (Logon.asp and Register.asp) that anyone can view without supplying their credentials. To view the rest of the pages, a user must log on by using a valid user ID and password. Therefore, when a user directly browses to any page that requires logon information, the user is redirected to the Logon.asp page. The users must provide a valid user ID and password in the Logon.asp page. If the password is incorrect, the user can try to log on again.

ถ้า ID ผู้ใช้และรหัสผ่านของผู้ใช้ไม่มีอยู่ในฐานข้อมูลของคุณ ผู้ใช้ที่ถูกเปลี่ยนเส้นทางไปยังเพจการ Register.asp ที่ผู้ใช้สามารถลงทะเบียนการใช้โปรแกรมประยุกต์ของคุณ เมื่อมีการลงทะเบียนผู้ใช้เว็บไซต์ของคุณผ่าน Register.asp หน้า ว่า มีป้อนรายละเอียดของผู้ใช้ในฐานข้อมูลผู้ใช้ที่คุณกำลังใช้การตรวจสอบผู้ใช้

การแก้ไขปัญหา

  • ตามความต้องการและโปรแกรมประยุกต์นี้ไม่มีความปลอดภัยอย่างไร คุณสามารถเปิดใช้งานการเข้ารหัสลับปลอดภัย Sockets Layer (SSL) บน Logon.asp เพื่อหลีกเลี่ยงการถ่ายโอนข้อมูลประจำตัวของผู้ใช้ในข้อความที่มีการยกเลิกการเลือก
  • บัญชีผู้ใช้เหล่านี้ไม่ได้แมปกับบัญชีผู้ใช้ Windows ดังนั้น คุณไม่สามารถตรงใช้บัญชี Windows ของคุณเข้าสู่ระบบของโปรแกรมประยุกต์นี้
  • กลไกการรักษาความปลอดภัยนี้ใช้ข้อมูลที่ใช้เซสชัน ASP ดังนั้น กลไกการนี้ไม่สามารถใช้งานสำหรับผู้ใช้ที่ไม่มีคุกกี้ที่เปิดใช้งาน
ข้อมูลอ้างอิง
หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
172138วิธีการสร้างไดเรกทอรีเสมือนในข้อมูลบริการทางอินเทอร์เน็ต (IIS)
282060ทรัพยากรสำหรับการรักษาความปลอดภัยบริการข้อมูลทางอินเทอร์เน็ต
299970วิธีการใช้สิทธิ์ของ NTFS เพื่อป้องกันเว็บเพจที่ทำงานบน IIS 4.0 หรือ 5.0

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 299987 - การตรวจสอบครั้งสุดท้าย: 01/08/2011 18:48:00 - ฉบับแก้ไข: 2.0

Microsoft Active Server Pages 4.0

  • kbaspobj kbdatabase kbhowtomaster kbsecurity kbmt KB299987 KbMtth
คำติชม