Este artigo passo a passo explica como criar uma solução de
segurança simples de arquivo usando o Microsoft FrontPage 2000, o ASP (Active
Server Pages) e um banco de dados do Microsoft Access.
Observações importantes
- O código de exemplo deste artigo não foi criado para
substituir os recursos de segurança incorporados do FrontPage. Os exemplos
foram criados para oferecer um mecanismo de segurança simples apenas para os
usuários que estão navegando no site. Dessa forma, a segurança do FrontPage
2000 não se integra aos nomes e senhas de usuário acrescentados ao banco de
dados do Microsoft Access.
- Os nomes e as senhas de usuário digitados são transmitidos
pela Internet em texto sem formatação. Para obter um nível maior de segurança,
a Microsoft aconselha usar um servidor Web compatível com a criptografia SSL
(Secure Sockets Layer). Para obter mais informações, consulte o administrador
ou o provedor do site..
Etapa 1 - Preparar-se para usar os recursos ASP no Front Page 2000
Antes de usar os recursos ASP no FrontPage 2000, é necessário
instalar os componentes listados no seguinte artigo da Base de Dados de
Conhecimento Microsoft (a página pode estar em inglês):
312638
(http://support.microsoft.com/kb/312638/
)
Descrição dos itens necessários para usar o ASP no FrontPage 2000
Etapa 2 - Criar uma nova Web no FrontPage 2000
Observação Para que esse exemplo de código funcione corretamente, é
necessário verificar se o nome da Web é LOGON e se é uma subweb da raiz do
site.
- No menu Arquivo, clique em Novo e em Página ou Web.
- Na lista de modelos, clique em Web vazia.
- Especifique o local da Web no servidor usando a seguinte
sintaxe
http://seu servidor/logon/
no qual seu servidor é o nome do
servidor Web com o recurso ASP habilitado.
- Clique em OK.
Etapa 3 - Criar um banco de dados usando o Microsoft Access
- Inicie o Microsoft Access.
- No menu Arquivo, clique em Novo.
- Na lista de opções, clique em Banco de dados em branco.
- Nomeie o arquivo como logon.mdb e
salve-o na área de trabalho.
- Na seção Tabelas, clique em Novo.
- Clique em Modo estrutura e em OK.
- Crie dois campos:
- Para Nome do campo, digite UID. Para Tipo de dados, clique com o botão direito do mouse em Texto e clique em Chave primária.
- Para Nome do campo, digite PWD. Para Tipo de dados, clique em Texto.
- No menu Arquivo, clique em Salvar. Nomeie a tabela tblUsers e clique em OK.
- No menu Exibir, clique em Modo folha de dados.
- Na coluna UID, digite usuario_de_teste. Na coluna PWD, digite senha.
- No menu Arquivo, clique em Fechar.
- Encerre o Microsoft Access.
Observações Por razões de segurança, as senhas são restritas a uma mistura de
letras maiúsculas, minúsculas e números.
Etapa 4 - Importar o banco de dados do Microsoft Access
- No menu Arquivo, clique em Importar.
- Clique em Adicionar arquivo.
- Na lista Examinar, clique na área de
trabalho.
- Clique no arquivo logon.mdb, criado na Etapa 3, e
em Abrir.
- Clique em Modificar.
- Altere a URL para _private/logon.mdb
e clique em OK.
- Clique em OK novamente para importar o arquivo.
- Clique em Não se for solicitada a adição de uma conexão de banco de
dados.
Etapa 5 - Criar as páginas ASP
É necessário criar diversos arquivos para trabalhar com esse
exemplo. Primeiro, você cria uma
home
page para o site, uma
página não
segura e uma
página
segura para testar, e então cria a
página da Web de logon e o
arquivo de inclusão de logon.
Etapa 5a - Criar a home page
Essa página funciona como a página padrão do site e inclui links
para a
página não-segura e a
página segura que será criada
posteriormente.
- Na barra de ferramentas do FrontPage, clique em Criar uma nova página normal.
- Alterne para o modo de exibição de HTML e exclua todo o
código HTML já existente.
- Digite ou cole o seguinte código na página:
<% @language="vbscript" %>
<html>
<head><title>Home Page</title></head>
<body>
<h3>Home Page</h3>
<p>You are logged on as:
<%
If Len(Session("UID")) = 0 Then
Response.Write "<b>You are not logged on.</b>"
Else
Response.Write "<b>" & Session("UID") & "</b>"
End If
%>
</p>
<ul>
<li><a href="secure.asp">Secure Page</a></li>
<li><a href="unsecure.asp">Unsecure Page</a></li>
</ul>
</body>
</html>
- Salve a página como default.asp na
pasta raiz da Web de logon.
- Feche a página clicando em Fechar no menu Arquivo.
Etapa 5b - Criar uma página não segura
Essa é uma página ASP básica que pode ser acessada por qualquer
pessoa.
- Na barra de ferramentas do FrontPage, clique em Nova página.
- Alterne para o modo de exibição de HTML e exclua todo o
código HTML já existente.
- Digite ou cole o seguinte código na página:
<% @language="vbscript" %>
<html>
<head><title>Unsecure Page</title></head>
<body>
<h3>Unsecure Page</h3>
<p>You are logged on as:
<%
If Len(Session("UID")) = 0 Then
Response.Write "<b>You are not logged on.</b>"
Else
Response.Write "<b>" & Session("UID") & "</b>"
End If
%>
</p>
<p><a href="default.asp">Back to default</a></p>
</body>
</html>
- Salve a página como unsecure.asp na
pasta raiz da Web de logon.
- Feche a página clicando em Fechar no menu Arquivo.
Etapa 5c - Criar uma página segura
A página nesta etapa é a mesma da página não segura criada na
Etapa 5b, exceto pela adição da
seguinte linha de código próxima da parte superior da página:
<!--#include virtual="/logon/_private/logon.inc"-->
Adicionar essa linha de código a uma página ASP da Web a torna uma
página da Web "segura".
- Na barra de ferramentas do FrontPage, clique em Nova página.
- Alterne para o modo de exibição de HTML e exclua todo o
código HTML existente.
- Digite ou cole o seguinte código na página:
<% @language="vbscript" %>
<!--#include virtual="/logon/_private/logon.inc"-->
<html>
<head><title>Secure Page</title></head>
<body>
<h3>Secure Page</h3>
<p>You are logged on as:
<%
If Len(Session("UID")) = 0 Then
Response.Write "<b>You are not logged on.</b>"
Else
Response.Write "<b>" & Session("UID") & "</b>"
End If
%>
</p>
<p><a href="default.asp">Back to default</a></p>
</body>
</html>
- Salve a página como secure.asp na
pasta raiz da Web de logon.
- Feche a página clicando em Fechar no menu Arquivo.
Etapa 5d - Criar a página de logon
A página de logon é criada para ser semelhante a uma caixa de
diálogo de logon padrão do Windows. Os usuários que tentam acessar a
página segura são enviados a essa
página para digitar o seu nome e a sua senha.
- Na barra de ferramentas do FrontPage, clique em Nova página.
- Alterne para o modo de exibição de HTML e exclua todo o
código HTML existente.
- Digite ou cole o seguinte código na página:
<% @language="vbscript" %>
<!--#include virtual="/logon/_private/logon.inc"-->
<%
' Was this page posted to?
If UCase(Request.ServerVariables("HTTP_METHOD")) = "POST" Then
' If so, verify the username/password that was entered.
If ComparePassword(Request("UID"),Request("PWD")) Then
' If comparison was good, store the user name...
Session("UID") = Request("UID")
' ..and redirect back to the original page.
Response.Redirect Session("REFERRER")
End If
End If
%>
<html>
<head><title>Logon Page</title>
<style>
body { font-family: arial, helvetica }
table { background-color: #cccccc; font-size: 9pt; padding: 3px }
td { color: #000000; background-color: #cccccc; border-width: 0px }
th { color: #ffffff; background-color: #0000cc; border-width: 0px }
</style>
</head>
<body bgcolor="#000000" text="#ffffff">
<h3 align="center"> </h3>
<div align="center"><center>
<form action="<%=LOGON_PAGE%>" method="POST">
<table border="2" cellpadding="2" cellspacing="2">
<tr>
<th colspan="4" align="left">Enter User Name and Password</th>
</tr>
<tr>
<td> </td>
<td colspan="2" align="left">Please type your user name and password.</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="left">Site</td>
<td align="left"><%=Request.ServerVariables("SERVER_NAME")%>  </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="left">User Name</td>
<td align="left"><input name="UID" type="text" size="20"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="left">Password</td>
<td align="left"><input name="PWD" type="password" size="20"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td colspan="2" align="center"><input type="submit" value="LOGON"></td>
<td> </td>
</tr>
</table>
</form>
</center></div>
</body>
</html>
- Salve a página como logon.asp na
pasta raiz da Web de logon.
- Feche a página clicando em Fechar no menu Arquivo.
Etapa 5e - Criar o arquivo de inclusão de logon
Esse arquivo de inclusão fornece os recursos de nome e senha de
usuário, além de ser usado tanto pela
página
segura quanto pela
página de
logon.
- Na barra de ferramentas do FrontPage, clique em Nova página.
- Alterne para o modo de exibição de HTML e exclua todo o
código HTML existente.
- Digite ou cole o seguinte código na página:
<%
' Do not cache this page.
Response.CacheControl = "no-cache"
' Define the name of the users table.
Const USERS_TABLE = "tblUsers"
' Define the path to the logon page.
Const LOGON_PAGE = "/logon/logon.asp"
' Define the path to the logon database.
Const MDB_URL = "/logon/_private/logon.mdb"
' Check to see whether you have a current user name.
If Len(Session("UID")) = 0 Then
' Are you currently on the logon page?
If LCase(LOGON_PAGE) <> LCase(Request.ServerVariables("URL")) Then
' If not, set a session variable for the page that made the request...
Session("REFERRER") = Request.ServerVariables("URL")
' ...and redirect to the logon page.
Response.Redirect LOGON_PAGE
End If
End If
' This function checks for a username/password combination.
Function ComparePassword(UID,PWD)
' Define your variables.
Dim strSQL, objCN, objRS
' Set up your SQL string.
strSQL = "SELECT * FROM " & USERS_TABLE & _
" WHERE (UID='" & ParseText(UID) & _
"' AND PWD='" & ParseText(PWD) & "');"
' Create a database connection object.
Set objCN = Server.CreateObject("ADODB.Connection")
' Open the database connection object.
objCN.Open "driver={Microsoft Access Driver (*.mdb)}; dbq=" & _
Server.MapPath(MDB_URL) & "; uid=admin; pwd="
' Run the database query.
Set objRS = objCN.Execute(strSQL)
' Set the status to true/false for the database lookup.
ComparePassword = Not(objRS.EOF)
' Close your database objects.
Set objRS = Nothing
Set objCN = Nothing
End Function
' This function restricts text to alpha-numeric data only.
Function ParseText(TXT)
Dim intPos, strText, intText
For intPos = 1 TO Len(TXT)
intText = Asc(Mid(TXT,intPos,1))
If (intText > 47 And intText < 58) Or _
(intText > 64 And intText < 91) Or _
(intText > 96 And intText < 123) Then
strText = strText & Mid(TXT,intPos,1)
End if
Next
ParseText = strText
End Function
%> - Salve a página como logon.inc na
pasta _private da Web de logon.
- Feche a página clicando em Fechar no menu Arquivo.
Etapa 6 - Testar a Web de logon
- Na Lista de pastas do FrontPage, clique em default.asp. Na barra de ferramentas do FrontPage, clique em Visualizar no navegador.
- O navegador agora carrega a home page de exemplo e mostra
que você não está conectado.
- Clique no link para a página não segura. A página é
carregada e mostra que você não está conectado. Clique no link para voltar à
página padrão.
- Clique no link para a página segura. A página de logon é
carregada no lugar da página segura.
- Digite usuário_de_teste para o nome
de usuário, digite senha para a senha e clique em LOGON.
- A página segura aparece e mostra que você está conectado
como usuário_de_teste. Clique no link para voltar à página padrão.
- A home page de exemplo é carregada e mostra que você está
conectado como usuário_de_teste.
- Clique no link para a página não segura. A página é
carregada e mostra que você está conectado como usuário_de_teste.
Personalizar o logon de exemplo
É possível personalizar o logon de exemplo das seguintes
maneiras:
- Adicionar nomes e senhas de usuário: É possível abrir o
banco de dados clicando duas vezes nele no FrontPage e adicionando usuários à
tabela tblUsers.
- Proteger outras páginas da Web: Para proteger uma outra
página da Web na Web, é necessário salvar o arquivo com uma extensão de nome de
arquivo ASP, por exemplo, minha_página.asp e adicionar
estas duas linhas na parte superior do arquivo:
<% @language="vbscript" %>
<!--#include virtual="/logon/_private/logon.inc"-->
A primeira linha específica que você está usando o Microsoft Visual
Basic Scripting Edition (VBScript) como a linguagem de script, e a segunda
linha inclui os recursos de nome e senha de usuário do
arquivo de inclusão de logon
criado anteriormente.
Para obter mais informações sobre como integrar as páginas
ASP aos bancos de dados e à segurança, clique nos números abaixo para ler os
artigos na Base de Dados de Conhecimento Microsoft (alguns artigos podem estar
em inglês):
299987
(http://support.microsoft.com/kb/299987/
)
Como usar o banco de dados e as sessões ASP para implementar a segurança ASP
300382
(http://support.microsoft.com/kb/300382/
)
Como criar uma conexão de banco de dados por uma página ASP no IIS