Jak užívat databáze a relace ASP k implementaci zabezpečení ASP

Prohlášení o odmítnutí odpovědnosti pro už nepodporovaný obsah KB

Tento článek byl napsán pro produkty, ke kterým již Microsoft nadále nenabízí podporu. Článek je tedy poskytován „tak, jak je“ a nebude už nadále aktualizován.

Důrazně doporučujeme, aby všichni uživatelé upgradovat na Internetová informační služba (IIS) verze 6.0 se systémem Microsoft Windows Server 2003. Služba IIS 6.0 výrazně zvyšuje zabezpečení webové infrastruktury. Další informace o tématech souvisejících se zabezpečením služby IIS naleznete na následujícím webu společnosti Microsoft:

Souhrn

Tento podrobný článek popisuje, jak implementovat zabezpečení založené na formulářích pro aplikace Active Server Pages (ASP). Tento mechanismus můžete použít, pokud je rozšířeného zabezpečení aplikace nebo pokud chcete povolit pouze ověření uživatelé. Tento mechanismus můžete použít také při uživatelé nejsou součástí interní domény, například uživatelé Internetu. Tato ukázka používá databáze k ukládání informací uživatelů a potom ověřuje uživatele proti databázi.

Předpoklady

  • Microsoft Windows NT 4.0 Workstation, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server nebo Microsoft Windows Server 2003
  • Microsoft Internet informační Server (IIS) 4.0 pro počítače se systémem Windows NT 4.0, Internetová informační služba (IIS) 5.0 pro počítače se systémem Windows 2000 nebo Internetová informační služba (IIS) 6.0 pro počítače se systémem Windows Server 2003
  • Microsoft SQL Server verze 6.5 nebo novější verzi serveru SQL Server

Postup při návrhu této aplikace

Tato část stručně popisuje kroky, které jsou vyžadovány pro implementaci zabezpečení založené na formulářích nebo vlastní zabezpečení na ASP webové aplikace:
  1. Přihlašovací formulář předložit uživateli.
  2. Ověření pověření uživatele proti informace uživatele jsou uloženy v databázi uživatelů.
  3. Vytvořte proměnnou relace a nastavte jeho hodnotu ID uživatele.
  4. Každý uživatel provede následné žádosti o potvrzení, že hodnota této proměnné relace není rovno prázdný řetězec ("") k potvrzení, že je uživatel přihlášen.
  5. Pokud je proměnná prázdný, uživatel není platný uživatel nebo uživatel je odhlášen z relace. Pokud je proměnná prázdný přesměrujte uživatele na přihlašovací stránku.
  6. Pokud pro přihlášení nezdaří, protože uživatel neexistuje v databázi, uživatel pravděpodobně registrován ještě na webu. Přesměrujte uživatele na stránku Register.asp tak, aby uživatel můžete zaregistrovat na vašem webu. Když se uživatel zaregistruje, tyto údaje uživatele jsou přidány do databáze uživatelů.
  7. Vytvořit odkaz na odhlášení stránky na všech stránkách s výjimkou přihlašovací stránku tak můžete odhlásit uživatele z relace. Tato stránka vymaže proměnné relace, která ID uživatele přiřazením prázdný řetězec ("").

Vytvořit tabulku databáze uživatelů

  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, do pole Otevřít zadejte Poznámkový blok a potom stisknutím klávesy ENTER spusťte program Poznámkový blok.
  2. Zvýrazněte následující skript SQL skriptu klepněte pravým tlačítkem myši a potom klepněte na příkaz Kopírovat. V programu Poznámkový blok klepněte na příkaz Vložit v nabídce Úpravy .
    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. V nabídce soubor klepněte na tlačítko Uložit. Do pole název souboru zadejte User.txt.
  4. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na Microsoft SQL Servera potom klepněte na položku Query Analyzer. V dialogovém okně připojit k serveru SQL Server zadejte název serveru, který je spuštěn SQL Server, ID uživatele a heslo pro připojení k serveru SQL Server.
  5. V nabídce soubor klepněte na tlačítko Otevřít. V dialogovém okně Otevřít klepněte na všechny soubory (*. *) v rozevíracím seznamu soubory typu . User.txt klepněte v seznamu a klepněte na tlačítko Otevřít.
  6. V poli databáze na panelu nástrojů vyberte databázi, ve kterém chcete vytvořit tuto tabulku. Pokud nemáte specifické databáze pro tento účel, klepněte na tlačítko Pubs ukázkové databáze Pubs vytvořit tuto tabulku.
  7. Po výběru databáze, klepněte na tlačítko Spustit v nabídce dotaz spustit dotaz. Tento krok vytvoří tabulka uživatelů ve vybrané databázi.

Vytvořit a nakonfigurovat virtuální adresář

  1. V Průzkumníkovi Windows vytvořte složku pod kořenový Web. Ve výchozím nastavení je kořenový Web systémová_jednotka: \Inetpub\Wwwroot. Pojmenujte složku ASPSecureAPP.
  2. Otevřete Internet Services Manager konzola Microsoft Management Console (MMC).

    Poznámka: V systému Windows NT 4.0 tato MMC názvem Správce služeb sítě Internet.
    • Chcete-li otevřít Správce služeb sítě Internet v počítači se systémem Windows 2000 nebo Windows Server 2003, klepněte na tlačítko Start, klepněte na tlačítko
      Spustit, zadejte příkaz
      inetmgr v Otevřít pole a stiskněte klávesu ENTER.
    • Chcete-li otevřít Správce služeb sítě Internet v počítači se systémem Windows NT 4.0, postupujte takto:
      1. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na položku Windows NT 4.0 Option Packa potom klepněte na položku Microsoft Internet Information Server.
      2. Klepněte na tlačítko Správce služeb sítě Internet.
  3. Rozbalte položku počítača pak rozbalte položku Výchozí webový server. Klepněte pravým tlačítkem myši ASPSecureAPP složky, kterou jste vytvořili v kroku 1 a potom klepněte na příkaz Vlastnosti.
  4. Na kartě adresář v dialogovém okně Vlastnosti klepněte na tlačítko vytvořit v části Nastavení aplikace pro označení adresáře jako aplikace.

Vytvoření vzorové stránky

Poznámka: Pokud pomocí programu Poznámkový blok vytvořit tyto stránky, ujistěte se, že klepnete na tlačítko Všechny soubory v seznamu Uložit jako typ v dialogovém okně Uložit jako uložit soubory.
Logon.asp
Tato stránka umožňuje uživatelům zadat své uživatelské jméno a heslo pro přístup k webu.

Zkopírujte následující kód do nové stránky ASP. Uložte soubor pod názvem Logon.asp v ASPSecureAPP složky adresář 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
%>
<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
Poté, co uživatel zadá své přihlašovací informace pro přihlášení k aplikaci, tato stránka ověřuje informace o uživateli a pak přesměruje uživatele na příslušnou stránku.

Zkopírujte následující kód do nové stránky ASP. Změňte parametry řetězec připojení tak, že obsahují platné hodnoty. Parametry řetězce připojení jsou následující:
  • ID uživatele
  • Heslo
  • Počáteční katalog
  • Zdroj dat
Uložte soubor jako Validate.asp ASPSecureAPP složky adresáře 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
Tato stránka umožňuje uživatelům zaregistrovat své ID uživatele a heslo pro přístup k webu.

Zkopírujte následující kód do nové stránky ASP. Změňte parametry řetězec připojení tak, že obsahují platné hodnoty. Parametry řetězce připojení jsou následující:
  • ID uživatele
  • Heslo
  • Počáteční katalog
  • Zdroj dat
Uložte soubor jako Register.asp ASPSecureAPP složky adresáře 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
Tato stránka umožňuje uživatelům odhlášení.

Zkopírujte následující kód do nové stránky ASP. Uložte soubor jako Logoff.asp ASPSecureAPP složky adresáře 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
Tato stránka slouží k testování stránek, které jste vytvořili.

Zkopírujte následující kód do nové stránky ASP. Uložte soubor pod názvem Default.asp v ASPSecureAPP složky adresář 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>

Na stránky přidat kód pro ověření

Následující kód zkontroluje, zda uživatel již přihlásil k serveru WWW a nebyla dosud odhlášen.

Zkopírujte tento blok kódu do každé stránky ASP rozšířené zabezpečení s výjimkou stránku Logon.asp a stránka Validate.asp. Nepřidávejte tento kód na stránku Logon.asp nebo stránka Validate.asp. Ujistěte se, vložte tento kód v horní části každé stránky, takže tento kód se zobrazí jako první.
<%'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
%>

Jak aplikace funguje

V podstatě tato aplikace má dvě stránky (Logon.asp a Register.asp), které každý uživatel můžete zobrazit bez nutnosti zadávat svá pověření. Chcete-li zobrazit ostatní stránky, musí se uživatel přihlásit pomocí platného uživatelského jména a hesla. Proto když uživatel přejde přímo na libovolnou stránku, která vyžaduje přihlašovací informace, bude uživatel přesměrován na stránku Logon.asp. Uživatelé musí poskytnout platné uživatelské jméno a heslo na stránku Logon.asp. Pokud je chybné heslo, může uživatel provést znovu přihlásit.

Pokud ID uživatele a heslo uživatele neexistuje v databázi, bude uživatel přesměrován na stránku Register.asp, kde lze registrovat uživatele k používání aplikace. Pokud se uživatel registruje na serveru WWW prostřednictvím Register.asp stránky, jsou zadány podrobnosti tohoto uživatele v databázi uživatelů, kteří používají k ověření uživatele.

Poradce při potížích

  • Na základě požadavků a do jaké míry je tato aplikace, můžete povolit šifrování protokol SSL (Secure Sockets Layer) (SSL) na Logon.asp, aby nedošlo k přenosu uživatelských pověření ve formátu prostého textu.
  • Tyto uživatelské účty nejsou namapovány na účty systému Windows. Proto nelze použít přímo účty v systému Windows se přihlásit k této aplikaci.
  • Tento mechanismus zabezpečení používá informace podle relace ASP. Proto tento mechanismus nefunguje pro uživatele, kteří nemají povoleny soubory cookie.

Odkazy

Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

Jak 172138 vytvoření virtuálního adresáře v Internetová informační služba (IIS)

282060 prostředky pro zabezpečení Internetová informační služba

299970 jak chránit systémem IIS 4.0 nebo 5.0 webovou stránku pomocí oprávnění systému souborů NTFS

Vlastnosti

ID článku: 299987 - Poslední kontrola: 19. 1. 2017 - Revize: 1

Váš názor