Pergunta

Obviamente algum tipo de mecanismo para limitar as tentativas de login é um requisito de segurança. Enquanto eu gosto do conceito de um tempo aumentando exponencialmente entre as tentativas, o que eu não tenho certeza de armazenar a informação. Eu também estou interessado em soluções alternativas, de preferência não incluindo captchas.

Eu estou supondo que um cookie não iria funcionar devido a bloquear cookies ou limpá-los automaticamente, mas teria sessões de trabalho? Ou será que ele tem que ser armazenado em um banco de dados? O desconhecimento do que métodos podem / estão sendo usados ??para que eu simplesmente não sei o que é prático.

Foi útil?

Solução

Use algumas colunas em sua tabela de usuários 'failed_login_attempts' e 'failed_login_time'. Os primeiros passos de um por login falhou, e redefinições no login bem-sucedido. O segundo permite que você comparar o tempo atual com a última vez falhou.

Seu código pode usar esses dados no db para determinar quanto tempo ele espera para bloquear usuários, tempo entre logins permitidos etc

Outras dicas

Assumindo que o Google tem feito os testes necessários usabilidade (não uma suposição injusta) e decidiu captchas usar, eu sugiro ir junto com eles.

Aumentar o tempo limite é frustrante quando eu sou um usuário genuíno e esqueci minha senha (com tantos sites e suas senhas associadas Isso acontece muito, especialmente para mim)

O armazenamento tentativas no banco de dados é a melhor IMHO solução, uma vez que lhe dá os registros de auditoria das tentativas de violação de segurança. Dependendo da sua aplicação pode ou não ser uma exigência legal.

Ao registrar todas as tentativas ruins que você pode também recolher informações de nível superior, como se as solicitações são provenientes de um endereço IP (ou seja, alguém / coisa é tentar um ataque de força bruta) para que você pode bloquear o endereço IP. Isso pode ser uma informação muito útil.

Depois de ter determinado um limite, porque não forçá-los a solicitar o e-mail a ser enviado para seu endereço de email (ou seja, semelhante a 'esqueci minha senha'), ou você pode ir para a abordagem CAPCHA.

lock-out Política é tudo muito bem, mas há um equilíbrio.

Uma consideração é pensar sobre o consruction de nomes de usuários - guessable? eles podem ser enumerados em tudo?

Eu estava em uma App Pen teste externo para uma dotcom com um Portal do Funcionário que serviu Outlook Web Access Serviços / intranet, certo Apps. Foi fácil para os usuários Enumerar (a Managament Equipe Exec / no web site em si, e através de empresas como Google, Facebook, LinkedIn etc). Uma vez que você tem o formato do logon nome de usuário (nome, em seguida, sobrenome entrou como uma única cadeia) I tinha a capacidade de fechar 100 dos usuários devido a seus 3 greves e fora da política.

As respostas neste banco de dados pós priorizar centrado soluções, porque eles fornecem uma estrutura de registros que fazem auditoria e lógica de bloqueio conveniente.

Enquanto as respostas aqui ataques de endereço adivinhar sobre usuários individuais, uma grande preocupação com esta abordagem é que ela deixa o sistema aberto para Denial of Service . Toda e qualquer solicitação do mundo deveria não gatilho trabalho banco de dados.

Uma alternativa (ou adicional) camada de segurança deve ser implementado no início do ciclo de req / res para proteger a aplicação e banco de dados de efectuar o bloqueio de operações que podem ser caros e são desnecessárias.

Express-Brute é um excelente exemplo que utiliza Redis caching para filtrar malicioso pedidos, permitindo os honestos.

Você sabe que UserID está sendo atingido, manter uma bandeira e quando atinge um valor limite simplesmente parar de aceitar qualquer coisa para esse usuário. Mas isso significa que você armazenar um valor de dados extra para cada usuário.

Eu gosto do conceito de um tempo aumentando exponencialmente entre as tentativas, [...]

Em vez de usar o tempo aumentando exponencialmente, você poderia realmente ter um atraso aleatório entre as tentativas sucessivas.

Talvez se você explicar o que a tecnologia que você está usando as pessoas aqui será capaz de ajudar com mais exemplos específicos.

Loja do lado do servidor da informação. Isso permitiria que você também defender contra ataques distribuídos (provenientes de várias máquinas).

Você pode gostar de dizer bloquear o login por algum tempo Digamos, por exemplo, 10 minutos após 3 tentativas falhas, por exemplo. Aumentando exponencialmente sons de tempo bom para mim. E sim, armazenar as informações na sessão do lado do servidor ou banco de dados. Banco de dados é melhor. Sem os cookies de negócios, pois é fácil de manipular por parte do utilizador.

Você também pode querer mapear tais tentativas contra o adrress IP do cliente, pois é bem possível que o usuário válido pode ter uma mensagem bloqueada enquanto alguém está tentando adivinhar a senha de usuário válido com as tentativas de falha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top