|
|
|
|
|
Dicas
|
|
ASP - Active Server Page (Miscelâneas)
|
|
|
Título da Dica: Proteger as Páginas ASP com Password que està em BD
|
|
|
|
Postada em 3/10/2003 por ^HEAVY-METAL^
Todos nós temos de proteger páginas nos projetos em que nos envolvemos. Aqui vai um simples exemplo que uso para proteger as páginas. Primeiro a página de login (entrada.htm ), a pagina que faz a verificacao do password e nome na base de dados (security.asp) e as linhas de código que têm de ser usadas nas outras pagina para serem protegidas ( site.asp ).
Isto funciona por meio de uma variável de sessão ( session variable ), sempre que estamos com o browser aberto esta session existe, se a fecharmos deixa de ter efeito e temos de voltar a introduzir a password.
Arquivo: entrada.htm
E Apenas um simples form the HTML que manda o nome e password para o arquivo security.asp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Entrada</title>
</head>
<body>
<form method="POST" action="security.asp"><BR>
<BR>
<div align="center">Nome<center><p><input type="text" name="nome" size="10"><br>Password
<div align="center"><center><p><input type="password" name="password" size="10"><br>
<input type="hidden" value="CHECKEM" Name="STATUS" >
<input type="submit" value="Login"></p>
</center></div>
</form>
</body>
</html>
Arquivo: security.asp
Este script faz 4 passos
1-ligacao DSN-Less a BD 2-Verifica se os form não foi submetido com campos vazios 3-Caso negativo da mensagem, e volta para a entrada.htm em 2 segundos 4-Aqui vai verificar se estes existem na BD, Caso negativo quer dizer que não esta certo e o utilizador recebe a mensaggem e em dois segundos e mandado de volta para entrada.htm 5-Caso positivo e a password estiver certa o session("pass") e dado o valor "true" o utilizador é enviado para a próxima página ("site.asp)
<% Response.buffer=true
' ligacao DSN-less a BD
dim fn, rs, rp, cs
sub openrs (d,q)
fn=d & ".mdb"
rp = Server.MapPath(fn)
rp = Left(rp,Len(rp)-len(fn))
' aqui tens especificar o path da BD
strnew="K:\WWWROOT\tutorials\DBlogin\BD\"
' mas tambem podes desligar essa linha e por no strnew aqui em baixo rp a mas nesse caso a BD tem de estar na mesma directoria o que nao e muito bom para este caso por cause de seguranca
cs = "DBQ=" & d &".mdb;DefaultDir="& strnew &";Driver={Microsoft Access Driver (*.mdb)};"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open q, cs, 3, 3, 1
end sub
' aqui fazemos o request dos dados do form de entrada.htm
nome=trim(request("nome"))
password=trim(request("password"))
' aqui verificamos se nenhum campo ficou vazio
if nome="" OR password="" then
Response.write "Nao preenenchue um campo"
Response.addheader "REFRESH", "2;URL=entrada.htm"
else
' aqui vamos abrir a BD no sitio do nome e password
'openrs "pas","select * from user where (nome = '" & nome & "') AND where (password = '" & password & "')"
openrs "pas","select * from user where nome Like'"&nome&"' AND password like '"&password &"'"
' aqui vimos se o record existe
if not rs.eof then
session("pass")=True
rs.close
set rs=nothing
response.redirect "site.asp"
'Caso negativo o user e manda-do para o entrada.htm
else
response.write "Password e nome nome nao encontrado"
Response.addheader "REFRESH", "2;URL=entrada.htm"
end if
end if
%>
Arquivo: site.asp
Esta é a linha que tens de or nas páginas, que queres proteger, a única coisa que as páginas tem de ter é a extensao .asp. Tão simples como isso ;-)
<% if NOT session("pass")=true then Response.redirect "entrada.htm"%>
T+,
|
|
|
|
|