Использование базы данных и сеансов ASP для обеспечения безопасности ASP

Переводы статьи Переводы статьи
Код статьи: 299987 - Vizualiza?i produsele pentru care se aplic? acest articol.
Внимание
Корпорация Майкрософт настоятельно рекомендует всем пользователям, провести обновление до Microsoft Internet Information Services (IIS) версии 6.0 под управлением Microsoft Windows Server 2003. IIS 6.0 значительно увеличивает Web инфраструктуру безопасности. Для получения дополнительных сведений по вопросам безопасности IIS посетите следующий веб-узел корпорации Майкрософт:
http://www.microsoft.com/technet/security/prodtech/iis.mspx
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье обсуждается реализация безопасности на основе форм для приложений Active Server Pages (ASP). Этот механизм можно использовать, когда приложение будет безопасности или когда требуется разрешить только пользователям, прошедшим проверку. Этот механизм можно использовать, когда пользователи не являются частью внутреннего домена, таких как пользователи Интернета. В этом примере используется база данных для хранения информации пользователя и затем проверяет пользователей от базы данных.

Предвартельные требования

  • Microsoft Windows NT 4.0 Workstation, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server или Microsoft Windows Server 2003
  • Microsoft Internet Information Server (IIS) 4.0 на компьютерах, работающих под управлением Windows NT 4.0, Microsoft Internet Information Services (IIS) версии 5.0 для компьютеров, работающих под управлением Windows 2000 или Microsoft Internet информации службы (IIS) 6.0 для компьютеров под управлением Windows Server 2003
  • Microsoft SQL Server 6.5 или более поздней версии SQL Server

Как создавать приложения

В данном разделе кратко описываются шаги, необходимые для реализации пользовательской безопасности или безопасности на основе форм на ASP веб-приложения:
  1. Пользователь видит форме входа в систему.
  2. Проверка учетных данных пользователя для сведений, хранящихся в базе данных пользователя.
  3. Создайте переменную сеанса и присвойте ему значение идентификатора пользователя.
  4. Для каждого последующего запроса, когда пользователь создает, убедитесь, что значение этой переменной сеанса не равным пустой строке ("") чтобы убедиться, что пользователь выполнил вход.
  5. Если переменная пуста, пользователь не является допустимым пользователем или пользователь вышел из сеанса. Перенаправление пользователя на страницу входа, если переменная пуста.
  6. Если вход завершается неудачей, поскольку пользователь не существует в базе данных, пользователь не могут быть зарегистрированы на веб-узел еще. Перенаправление пользователя на страницу Register.asp таким образом, чтобы пользователь может зарегистрировать в веб-узла. При регистрации пользователя, эти сведения о пользователе добавляются в базу данных пользователей.
  7. Предоставьте ссылку на выходе страницы на всех страницах, кроме страницы входа в систему, пользователь может выйти из сеанса. На этой странице очищает переменной сеанса, который владеет идентификатор пользователя путем назначения ему пустую строку ("").

Создание таблицы базы данных пользователя

  1. затем –START ::затем –ВыполнитьTYPE :notepadВ диалоговом окнеOPENв поле и нажмите клавишу ВВОД, чтобы запустить программу «Блокнот».
  2. Выделить следующий сценарий SQL, щелкните правой кнопкой мыши сценарий и нажмите кнопкукопирующий;. В «блокноте» нажмите кнопкувставка.в менюВ файлеменю.
    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. затем –START ::, выберите пунктПрограммы, выберите пунктMicrosoft SQL Serverи выберите командуАнализатор запроса. В диалоговом окнеПодключитесь к SQL Serverдиалоговое окно укажите имя сервера, на котором выполняется SQL Server, имя пользователя и пароль для подключения к SQL Server.
  5. в менюФайл:выберите пунктOPEN. В диалоговом окнеOPENдиалоговое окно, нажмите кнопкуВсе файлы (*. *)В диалоговом окнеТипы файловполе. затем –User.txtв списке, а затем нажмите кнопкуOPEN.
  6. В диалоговом окнеБАЗЫ ДАННЫХна панели инструментов выберите, следует создать эту таблицу базы данных. Если у вас нет определенной базы данных для этой цели, нажмите кнопкуpubsдля создания этой таблицы в образце базы данных Pubs.
  7. После выбора базы данных, нажмите кнопкувыполнен.в менюQuery:меню для выполнения запроса. На этом шаге создается таблица пользователей в выбранной базе данных.

Создать и настроить виртуальный каталог

  1. В проводнике Windows создайте папку веб-корне. По умолчанию является веб-корнесистемный_диск: \Inetpub\Wwwroot. Имя папки ASPSecureAPP.
  2. Открытие консоли управления Microsoft диспетчер служб Интернета (MMC).

    Примечание.В Windows NT 4.0 это MMC называется диспетчер служб Интернета.
    • Чтобы открыть диспетчер служб Интернета на компьютере под управлением Windows 2000 или Windows Server 2003, щелкнитеSTART ::затем –ВыполнитьTYPE :inetmgrВ диалоговом окнеOPENи нажмите клавишу ВВОД..
    • Чтобы открыть диспетчер служб Интернета на компьютере под управлением Windows NT 4.0, выполните следующие действия.
      1. затем –START ::, выберите пунктПрограммы, выберите пунктWindows NT 4.0 с пакетом Option Packи выберите командуMicrosoft Internet Information Server.
      2. затем –Диспетчер служб Интернета.
  3. expandMachine, а затем разверните узелВеб-узел по умолчанию. , щелкните правой кнопкой мыши объектASPSecureAPPпапку, созданную на шаге 1 и нажмите кнопкуСвойства.
  4. в менюdirectoryна вкладкеСвойствадиалоговое окно, нажмите кнопкуCreateВ диалоговом окнеПараметры приложенияраздел, чтобы каталог приложения.

Создание образца страницы

Примечание.При использовании программы «Блокнот» для создания этих страниц, убедитесь, что нажать кнопкуВсе файлыВ диалоговом окнеСохранить как типполеСохранить какдиалоговое окно при сохранении файлов.
Logon.ASP
Эта страница позволяет ввести имя пользователя и пароль для доступа к веб-узла.

Скопируйте следующий код в новую страницу ASP. Сохраните файл Logon.ASP в папке ASPSecureAPP в папку 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
После его учетные данные для входа в систему для приложения, предоставленные пользователем, на этой странице, проверяет сведения о пользователе и затем перенаправляет пользователя на соответствующую страницу.

Скопируйте следующий код в новый ASP страницы. Измените параметры строки подключения, чтобы они содержат допустимые значения. Ниже перечислены параметры строки подключения.
  • Код пользователя:
  • password»
  • Исходный каталог
  • Источник данных.
Сохраните файл как Validate.asp в папке ASPSecureAPP в папку 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
Эта страница позволяет регистрировать имя пользователя и пароль для доступа к веб-узла.

Скопируйте следующий код в новый ASP страницы. Измените параметры строки подключения, чтобы они содержат допустимые значения. Ниже перечислены параметры строки подключения.
  • Код пользователя:
  • password»
  • Исходный каталог
  • Источник данных.
Сохраните файл как Register.asp в папке ASPSecureAPP в папку 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
Эта страница позволяет завершить работу.

Скопируйте следующий код в новую страницу ASP. 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.Abandon
Response.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 = -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>
				

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 = -1

if session("UID")="" then 
    Response.Redirect "Logon.asp"
    Response.End
end 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.

Если идентификатор пользователя и пароль пользователя не существует в базе данных, пользователь перенаправляется на Register.asp страницу, где пользователь может зарегистрировать для использования приложения. При регистров пользователя на веб-узла через Register.asp страницы, что пользователя сведения вводятся в базе данных пользователей, которые используются для проверки пользователей.

ПОИСК И УСТРАНЕНИЕ НЕПОЛАДОК

  • В зависимости от требований и как безопасные — это приложение, можно включить шифрование Secure Sockets Layer (SSL) на Logon.ASP, чтобы избежать переноса учетных данных пользователя в виде открытого текста.
  • Эти учетные записи пользователей не соответствуют учетным записям Windows. Таким образом нельзя использовать непосредственно учетных записей Windows для входа в систему для данного приложения.
  • Этот механизм безопасности использует сведения, основанные на сеанс ASP. Таким образом этот механизм не работает для пользователей, которые не включены файлы cookie.

Ссылки

Дополнительные сведения см. в следующих статьях базы знаний Майкрософт::
172138Как создать виртуальный каталог в информационных службах Интернета (IIS)
282060Ресурсы по обеспечению безопасности информационных служб Интернета
299970Как с помощью разрешений NTFS для защиты веб-страницы, работающих под управлением IIS 4.0 или 5.0

Свойства

Код статьи: 299987 - Последний отзыв: 21 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Active Server Pages 4.0
Ключевые слова: 
kbaspobj kbdatabase kbhowtomaster kbsecurity kbmt KB299987 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:299987
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

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