Autenticação com registro de 3 tentativas - ZendFramework 1.11

103 views
Skip to first unread message

Kaius

unread,
Jan 9, 2013, 5:29:48 PM1/9/13
to zfbr...@googlegroups.com
Fala ae pessoal, desenvolvi uma pequena área administrativa utilizando o componente Auth do ZF 1, e agora queria bolar uma
pequena rotina, Se o usuário tentar logar-se no sistema e errar a senha, na terceira tentativa de falha, eu faço um registro e bloqueio
o acesso daquele IP e usuário(por um tempo pré determinado) a área administrativa.

 Oque vocês tem em mente, ou por experiencia própria ? seria bom bloquear o acesso pelo IP ?

Leandro Sales

unread,
Jan 10, 2013, 6:18:44 AM1/10/13
to zfbr...@googlegroups.com
Eu faço isso usando cookies. Grave uma variável em um cookie e vá incrementando ele toda vez que alguém errar a senha. Quando ela chegar a 3, você barra o login, grava outro cookie dizendo que tá bloqueado e com o tempo de bloqueio. Quando este tempo de bloqueio chegar ao fim, limpe todos os cookies.

--
Leandro Sales
Desenvolvedor Web
@leandroasp | +55 86 9427-5626


2013/1/9 Kaius <inicianteemz...@gmail.com>

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR

Cledir José Scopel

unread,
Jan 9, 2013, 8:01:32 PM1/9/13
to zfbr...@googlegroups.com
Olá Kaius

Sinceramente você bloquear o acesso pelo IP considero meu extremo demais... 
Esse bloqueio vai gerar diversas reclamações de quem for utilizar!

O que você poderia fazer é inserir Captcha no Login (podendo utilizar o do próprio ZF 1), evitando ataques de tentativas automatizadas....

Abraço.

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR



--
  ..:: Cledir José Scopel  ::..

Marcelo Boeira

unread,
Jan 10, 2013, 6:45:27 AM1/10/13
to zfbr...@googlegroups.com
Se você bloquear e for por IP Externo em uma mesma rede vários potenciais usuários seriam bloqueados, o melhor é Cookie.

Josiel Rocha

unread,
Jan 10, 2013, 6:51:43 AM1/10/13
to Zend Framework Brasil
Concordo em partes.

Eu bloquearia um conjunto login do usuario + endereco IP desta forma eu não bloquearia outros usuários.

talvez um arquivo de bloqueio montado mais ou menos assim:

<?php

$login = $this->params()->fromPost('usuario', false);
$ip    = $this->getRequest()->getServer('REMOTE_ADDR');

$key   = md5($login . $ip);

// Verificar se a $key está na Blacklist


_________________________________
Josiel Rocha - josiel...@gmail.com
Tel.: (11) 6119-6265


Em 10 de janeiro de 2013 09:45, Marcelo Boeira <marcel...@gmail.com> escreveu:
Se você bloquear e for por IP Externo em uma mesma rede vários potenciais usuários seriam bloqueados, o melhor é Cookie.

--

Josiel Rocha

unread,
Jan 10, 2013, 6:54:58 AM1/10/13
to zfbr...@googlegroups.com
Desculpe,

Postei um código para ZF2, quando a Thread pede ZF1, mas a lógica é a mesma.

curioso zendframework

unread,
Jan 10, 2013, 5:06:07 PM1/10/13
to zfbr...@googlegroups.com
Muito bom a opinião de todos.
Marcelo Boeira, tem razão, não havia pensado na possibilidade do IP EXTERNO, apesar de não ser o caso da minha aplicação,
mas a dica já serve para futuros projetos. creio que farei a rotina como a maioria indicou, faço uma blacklist com time para o usúario
+ cookies.. e seguindo mais outra dica vou implementar um captcha..

Valeu ae pessoal!!!

Daniel Lima

unread,
Jan 10, 2013, 11:18:41 PM1/10/13
to zfbr...@googlegroups.com
Bom.. 

Eu nunca fiz isso, mas também não usaria cookies pelo fato deles serem armazenados localmente.
Se o cara tentar de outra máquina, ele consegue entrar.
Imagino algo somente com uma tabela que grave a time que o cara logou e suas tentativas. Se o número de tentativas feitas pelo usuário X, sem sucesso, for igual a 3, num certo período de tempo, então bloqueia.

Abs,

________________________________________

Daniel Lima 

Web Developer at Cilens Web Applications

(33) 3621-3195 - (33) 9124-3767

Skype: yourwebmaker
Twitter: @yourwebmaker 

Talk: yourwe...@gmail.com

Msn: yourwe...@hotmail.com

Facebook: https://www.facebook.com/cilens

Website: http://www.cilens.com.br





2013/1/10 curioso zendframework <inicianteemz...@gmail.com>

--

Silas Ribas

unread,
Jan 11, 2013, 7:12:30 AM1/11/13
to zfbr...@googlegroups.com
Salve,

Eu já fiz algo do tipo. Utilizamos registro no banco com o tempo da inclusão na blacklist, tem que ter um processo que fica verificando se já passou o tempo de bloqueio (datahora atual > (datahora do bloqueio + tempo de bloqueio )), e remover caso sim.

Ai você não depende de cookie, de IP e tal, você vai logo no bloqueio direto do usuário, se ele for pra outra máquina, já era, bloqueado.

Para fazer o contador você poderia guardar os dados num memcache/redis da vida: chave sendo o usuário e o valor a quantidade de tentativas ja executadas e falhadas.

--
Silas Ribas
71 9155.0533

Gilton Guma

unread,
Jan 17, 2013, 7:33:39 AM1/17/13
to zfbr...@googlegroups.com
Não saquei a razão do uso do IP.
Porque não utilizar somente o "user", "email", etc.
Se ele acessar de outra máquina por exemplo, seria a mesma coisa que utilizar cookies.
A cada tentativa de acesso de um usuario verifica na blacklist e se falhar a autenticação salva um log no DB, txt, etc.
Se ultrapassar o número configurado de tentativas, insere o usuário na blacklist com o tempo estipulado para novo acesso.
Pode até devolver o tempo restante para o próximo acesso.
Sei lá, acho que não precisaria mais do que isso.


Espero ter ajudado! ;)




Em quarta-feira, 9 de janeiro de 2013 20h29min48s UTC-2, Kaius escreveu:
Reply all
Reply to author
Forward
0 new messages