Jak užívat databáze a relace ASP k implementaci zabezpečení ASP (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Překlady článku Překlady článku
ID článku: 299987 - Produkty, které se vztahují k tomuto článku.
Poznámka
Důrazně doporučujeme, aby všichni uživatelé upgradovat 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 Internetové informační služby naleznete na následujícím webu společnosti Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

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

Požadavky

  • 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 Information 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 6.5 nebo novější verzi serveru SQL

Jak navrhnout této aplikace

Tato část stručně popisuje kroky, které jsou požadovány k implementaci zabezpečení založené na formulářích nebo vlastní zabezpečení na ASP webové aplikace:
  1. Prezentovat přihlašovací formulář uživatele.
  2. Ověření pověření uživatele proti informace uživatele, který je uložen v databázi uživatelů.
  3. Vytvořte proměnné relace a nastavte její hodnotu ID uživatele.
  4. Pro každý následných požadavek uživatel provede, potvrdit hodnotu proměnné relace není rovna prázdný řetězec ("") potvrďte, že má uživatel přihlášen.
  5. Pokud je proměnná prázdný, uživatel není platný uživatel nebo má uživatel odhlášen z relace. Pokud je proměnná prázdný přesměrovat uživatele přihlašovací stránku.
  6. Pokud pro přihlášení nezdaří, protože uživatel neexistuje v databázi, uživatel pravděpodobně není registrován na vašem webu ještě. Přesměrovat uživatele na stránku Register.asp tak, aby uživatel lze zaregistrovat na vašem webu. Když uživatel zaregistruje tyto podrobnosti uživatel přidán do databáze uživatelů.
  7. Poskytnout odkaz mimo stránku do protokolu na všech stránkách s výjimkou přihlašovací stránku tak, aby se můžete odhlásit uživatele z relace. Tato stránka vymaže proměnné relace drží 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, zadejte do pole OtevřítPoznámkový blok a stisknutím klávesy ENTER spusťte Poznámkový blok.
  2. Zvýrazněte následující skript SQL skriptu klepněte pravým tlačítkem myši a klepněte na příkaz Kopírovat. V poznámkovém bloku, klepněte na tlačítko Vložit na 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 Server a klepněte na položku Query Analyzer. V dialogovém okně připojit k serveru SQL zadejte název serveru je spuštěn SQL Server, uživatelské jméno a heslo, připojit k serveru SQL.
  5. V nabídce soubor klepněte na tlačítko Otevřít. V dialogovém okně Otevřít klepněte všechny soubory (*. *) v poli Typ souboru. 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 vytvořit tuto tabulku v ukázkové databáze pubs.
  7. Po výběru databáze klepněte v nabídce dotaz spustit dotaz spouštět. Tento krok vytvoří tabulku 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 SystemDrive: \Inetpub\Wwwroot. Název složky ASPSecureAPP.
  2. Otevřete konzola Microsoft Management Console Správce služeb Internet (MMC).

    Poznámka: V systému Windows NT 4.0 tato MMC názvem Správce služeb Internetu.
    • Chcete-li otevřít Správce služeb Internetu v počítači se systémem Windows 2000 nebo Windows Server 2003, klepněte na tlačítko Start, klepněte na příkaz Spustit, do pole Otevřít zadejte inetmgr a stiskněte klávesu ENTER.
    • V počítači se systémem Windows NT 4.0 otevřít Správce služeb Internetu, postupujte takto:
      1. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na Windows NT 4.0 Option Pack a potom klepněte na příkaz Microsoft IIS.
      2. Klepněte na položku Správce služeb Internetu.
  3. Rozbalte položku počítač a potom rozbalte položku Výchozí webový server. Klepněte pravým tlačítkem myši na složku ASPSecureAPP vytvořené 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í aplikací označit adresáři jako aplikace.

Vytvoření ukázkových stránek

Poznámka: Pokud tyto stránky vytvořit pomocí programu Poznámkový blok Ujistěte se při ukládání souborů klepnutím Všechny soubory v seznamu Typ v dialogovém okně Uložit jako.
Logon.ASP
Tato stránka umožňuje uživatelům, zadejte 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 jako Logon.ASP 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
Po uživateli poskytuje své přihlašovací informace pro přihlášení k aplikaci, tato stránka ověřuje informace uživatele a přesměruje uživatele na příslušnou stránku.

Zkopírujte následující kód do nové ASP stránky. Změnit parametry řetězec připojení, které 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ář 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é uživatelské jméno a heslo pro přístup k webu.

Zkopírujte následující kód do nové ASP stránky. Změnit parametry řetězec připojení, které 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ář 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ář 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 jako default.ASP 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>
				

Přidat ověřovací kód stránky

Následující kód zkontroluje, zda uživatel již přihlásil k webu a má není odhlášen ještě.

Zkopírujte tento blok kódu do každé stránky ASP rozšířené zabezpečení kromě stránku Logon.ASP a stránka Validate.asp. Tento kód přidat stránku Logon.ASP nebo stránka Validate.asp. Zkontrolujte, zda tento kód v horní části každé stránky vložit tak, aby 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 funguje této aplikace

V podstatě tato aplikace má dvě stránky (Logon.ASP a Register.asp), kdokoli lze zobrazit bez poskytnutí svá pověření. Chcete-li zobrazit zbytek stránky, musí se uživatel přihlásit pomocí platné uživatelské jméno a heslo. Proto když uživatel přejde přímo na stránku, která vyžaduje přihlašovací informace, je uživatel přesměrován stránku Logon.ASP. Uživatelé musí poskytnout platné uživatelské jméno a heslo v stránku Logon.ASP. Pokud je nesprávné heslo, uživatel může pokusit znovu přihlásit.

Pokud uživatelské jméno a heslo uživatele neexistuje v databázi, uživatel přesměrována Register.asp stránky, kde může uživatel použít aplikace zaregistrovat. Po stránce Registry uživatele na webovém serveru prostřednictvím Register.asp zadány podrobnosti uživatele do databáze uživatelů, které používáte k ověření uživatele.

Odstraňování potíží

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

Odkazy

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
172138Jak vytvořit virtuální adresář v Internetová informační služba (IIS)
282060Prostředky pro zabezpečení Internetová informační služba
299970Jak chránit systémem IIS 4.0 nebo 5.0 webovou stránku pomocí oprávnění NTFS

Vlastnosti

ID článku: 299987 - Poslední aktualizace: 16. června 2006 - Revize: 4.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Active Server Pages 4.0
Klíčová slova: 
kbmt kbaspobj kbdatabase kbhowtomaster kbsecurity KB299987 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:299987
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

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