Ir para conteúdo

POWERED BY:

Arquivado

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

Vinícius Siller

Login c/ limite de tentativas

Recommended Posts

Bom, não sou o fera no ASP, mas tenho estudado muito, espero ser bem-vindo nesse fórum.

 

 

 

Minha primeiras dúvida seria sobre um sistema de Login com limite de tentativas, ou seja,

se o usuário errar 3 vezes a senha ou login, o sistema trava o botão de enviar, impossibilitando uma suposta invasão.

 

Algo assim:

 

Veja esse link: Clique

 

 

Note que antes de terminar as tentativas tem uma linha da seguinte forma:

<td><input type="submit" size="20" value="Acessar" name="botao" class="inputSubmit"></td>

 

Logo que as tentativas acabam surge uma linha logo abaixo assim:

<script language="JavaScript">document.frmlogin.Admin_ID.readOnly = true;document.frmlogin.Admin_pwd.readOnly = true;document.frmlogin.botao.disabled = true;</script>

 

Pode ser que seja algum case que tenha sido usado.

Você imagina como fizeram?

Eu acho bem útil esse sistema, vamos ver se ele será útil pro pessoal, pois até hoje nao vi uma postagem desse caso aqui.

Vamos colaborar?

 

 

 

 

 

Vinícius Siller

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve...

 

É simples cara.. na hora de autenticar o Login, você verifica.. então, se for errado, não irá logar.. ai é só criar uma session ou coockie (ai vai da sua preferencia) que armazena as tentativas de login.. sempre somando mais um

 

<% Session("erros_login") = Session(("erros_login") + 1 %>

Aí, na página de login é só verificar...

 

<% If Session("erros_login") >= 3 Then %>Você excedeu o número de tentativas<% Else %><input type="submit" value="Logar" /><% End If %>

A lógica é essa.. qualquer dúvida poste ai!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for por session ou cookies é só o usuario fechar o browser e abrir novamente ou limpar os cookies, a forma mais segura é armazenar o IP e as tentativas do suposto invasor no servidor e ai você faz que bem entender, podendo até liberar novas tentativas após X tempo

Compartilhar este post


Link para o post
Compartilhar em outros sites

É.. eu tinha feito algo do tipo, mas não tinha dado muito certo, vou ver o que faço, mas você ja me esclareceu bem... depois do almoço vou tentar ehhee.. valeu..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quiser bloquear mesmo o acesso após essas X tentativas e usar o método acima.

 

Crie um "flag bloqueado" na tabela de usuários e marque como 1, por exemplo, quando o cara estourar as tentativas. Daí quando tentar logar você exibe so usuário que este login está bloqueado ou coisa do tipo.

 

[]tz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato.. no caso de sessions pode expirar mesmo antes de fechar a página.. coockies se o usuário fechar ou excluí-los, por ip também há formas de burlar.. o mais seguro no caso então seria armazenar os logins que não podem mais ser acessados em uma tabela no DB......Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí povo, obrigado pela ajuda.

Minha cabeça tava tão avuada que eu nem tinha pensado nessas coisas.

Mas tudo bem. Deu certinho, apenas com sessions.

Depois tento fazer bloqueando IP tbm.

 

Bem... o código ficou assim:

 

 

<%Response.Expires = -1000 Response.Buffer = True Dim Erro_Loginlogin = Request.Form("login")If login = "login_again" ThenSession("UserLoggedIn") = ""ShowLoginElseIf Session("UserLoggedIn") = "true" ThenAlreadyLoggedInElseIf login = "true" ThenCheckLoginElseShowLoginEnd IfEnd IfEnd IfSub ShowLoginResponse.Write(Erro_Login & "<br>")%><form name=form1 action=login.asp method=post>  Usuário: <input type=text name=username>  Senha: <input type=password name=userpwd> 	  <% if session("Erro_Login") = 0 Then %>Você tem 3 chances <br><input type=submit value="Login" name="submit"><% End if %>	<% if session("Erro_Login") = 1 then%>Você tem 2 chances<br><input type=submit value="Login" name="submit"><% End if %><% if session("Erro_Login") = 2 then%>Você tem 1 chance<br><input type=submit value="Login" name="submit"><% End if %>	  <% If Session("Erro_Login") >= 3 Then %>Sistema travado<br><input type=submit value="Login" name="submit" disabled><% End if %><input type=hidden name=login value=true></form><%End SubSub AlreadyLoggedIn%><form name=form2 action=login.asp method=post><input type=submit name=button1 value='Logout'><input type=hidden name=login value='login_again'></form> <%End SubSub CheckLoginDim Conn, cStr, sql, RS, username, userpwd, Erro_Loginusername = Request.Form("username")userpwd = Request.Form("userpwd")Set Conn = Server.CreateObject("ADODB.Connection")cStr = "DRIVER={Microsoft Access Driver (*.mdb)};"cStr = cStr & "DBQ=" & Server.MapPath("email.mdb") & ";"Conn.Open(cStr)sql = "select username from usuario where username = '" & LCase(username) & "'"sql = sql & " and userpwd = '" & LCase(userpwd) & "'"Set RS = Conn.Execute(sql)If RS.BOF And RS.EOF Then	Session("Erro_Login") = Session("Erro_Login") + 1	ShowLoginElse	Session("UserLoggedIn") = "true"	Response.Redirect "principal.asp"End IfEnd Sub%>

 

Gente valeu! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Mas aí, vamos ver como a gente consegue travar com IP?

Alguém da uma idéia??? :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

você faz na mesma logica, substitua as sessions por um campo na tabela de usuarios ou cria uma tabela temporária, quando o camarada der o submit no form você pega o verifica se o nome de usuario existe, se existir verifica quantas vezes ele tentou se ainda não chegou a X tentativas verifica a senha. Porém isso que você pretende fazer tem um enorme furo....ao bloquear uma suposta tentativa de invasão o cara já sabe que o nome de usuario que ele digitou existe, então fica mais facil pra ele, só falta descobrir a senha do usuario! Ainda acho mais seguro o velho sistema de verificação de usuario e senha pois assim ele teria que fazer uma combinação de dados para poder acessar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não não camarada, ele não tem como saber se o usuário existe, de qualquer modo ele terá q descobrir os dois para entrar no sistema. Como ele sabe que o nome já existe? Você deve ter se confundido, ou eu nao entendi o que você quiz dizer ( que é o mais provavel ) huhuhuhhu... falou! abçs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos supor que você queira bloquear por IP....o usuario joao fez 3 tentativas e o sistema travou....ai o usuario ze que não fez nenhuma tentativa tenta acessar o login dele na mesma máquina e tá travado, ou seja, o joao travou o IP e o ze não pode acessar. Então sugiro que bloqueie por nome de usuario, ai o joao vai tentar 3 vezes e não irá bloquear do ze. Porém se alguem tentar acessar com o login do joao por três vezes e bloquear ele saberá que existe um usuario joao, faltará apenas descobrir a senha e acessar quando estiver novamente desbloqueado. Então veja.....se você fizer a verificação de usuario e senha e der a velha mensagem "usuário OU senha incorretos" o usuario sabe que um ou os dois dados ele errou. Esse sistema de bloqueio é bom apenas para administração, quando o administraor resolve bloquear um usuario por um determinado motivo que não seja por tentativa de acessoObs.:Essa é minha opinião pois acho mais seguro não bloquear por tentativas do usuario, sugiro que você então crie um codigo para enviar um email para o adm quando o usuario joao tentar mais de 3 vezes ai o admin vê o que deve ser feito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi o que você quiz dizer.Bom, minha intenção nem era fazer um sistema para aumentar a segurança.Sabe quando te dá ataques de curiosidade? Então. Só queria ver mesmo como fazia isso.E outra coisa, quando o cara fica querendo invadir um sistema alheio, ele faz qualquer coisa, ate reinicia a adsl pra mudar de IP hoehoihoeheoheo... mas a nossa discussão foi boa pra tirar um pouco do meu ferrugem. Valeu pela atenção.

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.