Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razs

[Resolvido] login e cadastro MD5

Recommended Posts

Boas pessoal, apos ver alguns exemplo no laboratorio fiz as alterações para poder proteger a minha pagina.

 

O objectivo é simples, ao inserir novo utilizador ele grava no campo password o username+password em MD5.

 

O problema é que ando aqui a "nadar as voltas" utilizando o sistema do xanburzum consegui fazer o login e ele parece funcionar.

 

Mas para gravar nao estou a conseguir.

nao bastava incluir o md5 e chamar a funcao do mesmo?

 

<!--#include file="md5.asp"-->
strpassword = request.form("Username") + request.form("password")


rs.fields("password")= MD5(strpassword)	

 

Ok ja consegui criptografar agora nao consigo é fazer o login.

 

Vou dar mais uma volta no codigo e ja ca volto

Compartilhar este post


Link para o post
Compartilhar em outros sites

na sua pagina de login você tem que fazer o include do arquivo MD5.asp.

Depois você tem que criptografar as informacoes novamente para comparar.

 

exemplo:

nome = request.form("nome")
senha  = request.form("senha")

set rs = conn.execute("select nome, senha from users where nome='"&MD5(nome)&"' and senha = '"&MD5(senha)&"'")

 

É basicamente isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

já esta, eu ainda gostava de saber porque é que temos a mania de complicar o que é simples...

 

aqui para o caso de alguem precisar

 

login.asp

<form method="post" action="loginver.asp">
                   <div class="form_row"><label>Username</label><br><input name="user101" type="text" class="inputfield" id="user" maxlength="60"/>
             </div>
                   <div class="form_row"><label>Password</label><br><input name="pass101" type="password" class="inputfield" id="pass" maxlength="60"/>
             </div>
                   <br><input class="button" type="submit" name="Submit" value="Login" />
		  </form>

 

loginver.asp

<%@LANGUAGE = VBScript%>
<!--#include file="md5.asp"-->
<!--#include file="sqlinjection.asp"-->
<%

 Dim suser
 Dim sPassword

 suser = Request.Form("user101")
 sPassword = Request.Form("pass101")
 sValidHash = MD5(suser + sPassword)

%>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
</head>
<body>


<%

If suser= "" OR sPassword= "" Then
Response.Redirect("index.asp?erro=Please try again.")
Else
	Dim cn,sql
	Set cn = Server.CreateObject("ADODB.Connection")
	cn.Open "Provider=Microsoft.Jet.Oledb.4.0; Data Source="& Server.MapPath("db/12345678.mdb") &";Persist Security Info=False"
	Set sql = cn.Execute("SELECT * FROM userstbl WHERE password LIKE '" & sValidHash& "'")
	If sql.EOF Then
		Response.Redirect("login.asp?erro=Please try again.")
	Else
	Session("user") = Request.Form("user")

	Response.Redirect("index.asp")


	End if

End if
%>


</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu a pouco estava a complicar. Agora ja funciona.

Estou so a fazer uma alteração para ele codificar em md5 antes de enviar para a pagina de verificação

 

Alguma razao para este form nao me estar a chamar esta funcao?

 

 

<form method="post" name="submit" action="index.asp">


<%
if request.form("submit.x")>0 then


suser = Request.Form("user101")
sPassword = Request.Form("pass101")
sValidHash = MD5(suser + sPassword)

Session("verlog") = sValidHash

 	response.redirect ("login2.asp")
else	
end if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o include para o MD5 também esta no form ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim isto é tudo na mesma pagina.

Estou a tentar fazer com uma sub mas nao esta a funcionar.

 

 <form method="post" name="submit" action="<%call maxc()%>">
                   <div class="form_row"><label>Username</label><br><input name="user" type="text" class="inputfield" id="user" maxlength="60"/>
             </div>
                   <div class="form_row"><label>Password</label><br><input name="pass" type="password" class="inputfield" id="pass" maxlength="60"/>
             </div>
                   <br><input class="button" type="submit" name="Submit" value="Login" />
		  </form>

 

 

e no fim da pagina

<%
sub maxc()
Response.Write"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
suser = Request.Form("user")
sPassword = Request.Form("pass")
sValidHash = MD5(suser + sPassword)

Session("verlogcrypt") = sValidHash

Response.Write(Session("verlogcrypt"))

 	'response.redirect ("login2.asp")
end sub

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

porfavor post o numero do erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro é o 404 pois ele tenta abrir uma pagina que nao existe

 

eu apenas quero chamar um sub quando clico no butao do form.

 

Alterei o codigo para

 

sub submit()

suser = Request.Form("user")
sPassword = Request.Form("pass")
sValidHash = MD5(suser + sPassword)

Session("verlogcrypt") = sValidHash

 	response.redirect "login2.asp"
end sub

 

e dei o nome ao form de submit mas ele nao faz nada

 

solve it

if request.form("insform.x")>0 then
addusers
end if

sub addusers()


end sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o evento OnSubmit do javascript, para ai sim executar sua funçãos

ou pode usar o evento onclick para executar a sub desejado, chamado atraves destes eventos

Compartilhar este post


Link para o post
Compartilhar em outros sites

já esta a funcionar :)

 

 

diz-me so uma coisa, eu posso defenir a session assim: Session("user") = sql.fields("username")

 

nao sei porque nao funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque primeiro o valor do bd em uma variavel , tipo

 

varuser=rs("user")
session(user) = varuser

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja funciona. :)

 

Agora para terminar esta parte so me falta o contador de tentativas de login.

 

 

Como achas que é melhor? limite de tentativas com punição de 30m por exemplo?

 

Qual é o standard nestas situações?

 

Obrigado

 

Já agora que raio de erro é este??

 

Your temporary password is corc2012

ADODB.Recordset error '800a0cb3'

Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.

/usercorc/recpass3.asp, line 113 

 

 

<%
Dim perg,resp
perg= Request.Form("perg")
resp= Request.Form("resp")
If perg= "" OR resp= "" Then
Response.Redirect("recpass2.asp?erro=Please try again.")
Else
	Dim cn,sql
	Set cn = Server.CreateObject("ADODB.Connection")
	cn.Open "Provider=Microsoft.Jet.Oledb.4.0; Data Source="& Server.MapPath("db/12345678.mdb") &";Persist Security Info=False"
	Set sql = cn.Execute("SELECT * FROM users WHERE pergunta LIKE '" & perg& "' AND resposta LIKE '" & resp& "'")
	If sql.EOF Then
		Response.Redirect("recpass2.asp?erro=Please try again.")
	Else

			response.write "Your temporary password is corc2012"
			%><br>
			<br>
<%				
strpassword = sql.fields("username") + "corc2012"

sql.update
sql.fields("password")=MD5(strpassword)	
sql.fields("user_status")= "1"

sql.update
sql.close
Response.Redirect("index.asp?msg=Password Change, Please login and update the password.")	

  cn.close

	End if

End if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

um contador simpes, a cada vez que o user tenatr logar . você conta, e caso por exemplo, atinga 3 tentaivas sem logar, exiba um mensagem de erro, ou para entrar em contato com o admim

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que se passa com esta conexao?

 

 

Dim cn,sql
	Set cn = Server.CreateObject("ADODB.Connection")
	cn.Open "Provider=Microsoft.Jet.Oledb.4.0; Data Source="& Server.MapPath("db/12345678.mdb") &";Persist Security Info=False"
	sqlbase = "SELECT * FROM users WHERE pergunta LIKE '" & perg& "' AND resposta LIKE '" & resp& "'"
	sql.Open sqlbase,Cn,1,3

 

da-me erro

 

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/usercorc/recpass3.asp, line 103 

Compartilhar este post


Link para o post
Compartilhar em outros sites

um contador simpes, a cada vez que o user tenatr logar . você conta, e caso por exemplo, atinga 3 tentaivas sem logar, exiba um mensagem de erro, ou para entrar em contato com o admim

 

 

Essa parte já esta :)

 

pus um contador simples numa session e a partir da 5 tentativa nao deixa voltar a tentar durante 30 minutos e grava informação(ip, hora, data) na bd :)

 

 

agora é só mesmo esta treta da conexao que nao consigo por a funcionar... :s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dependendo de qual mensagem de erro você está recebendo, uma das seguintes opções é provavelmente verdade:

 

você estiver usando uma constante (por exemplo, adUseClient), mas se esqueceu de incluir ADOVBS.INC

você tentou usar o NextRecordset () método para processar vários conjuntos de resultados de um provedor de acesso

você tentou combinar as propriedades do lado do servidor de registros, por exemplo, cachesize, com um conjunto de registros do lado do cliente (adUseClient) - certifique-se as propriedades que você está usando faz sentido para o tipo de conjunto de registros que você abriu

você tentou usar métodos avançados ou propriedades como marcador, MovePrevious, ou AbsolutePage em objetos de registros padrão - certifique-se de definir o LockType corrigir e / ou CursorLocation

você tentou recuperar a chave primária usando ADOX

você está tentando usar um objeto ADODB.Recordset com um tipo de bloqueio indevido de lidar com uma atualização ou addnew - use uma instrução UPDATE ou INSERT em vez de um objeto Recordset

você está usando um objeto ADOX.Catalog (ou um dos vários outros objetos em potencial), e tentou fechá-la. Tudo que você tem a fazer é definir um objeto de catálogo para nada ... ele não tem um método close ().

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.