Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
A situação é a seguinte:
-Quero impedir usuários de tentarem acessar a tela de login de um cliente qualquer por força bruta, e gostaria também de evitar que ele ficasse a todo instante conectando ao meu banco de dados para verificações, mas não sei se é possível, e se for não sei como fazer no PHP.
.
Por exemplo:
-Se determinado IP tentou acessar diversas vezes o meu site com intenção maliciosa, gostaria de impedir seu acesso ao site por um tempo determinado (gostaria de NÃO ter de consultar uma "lista negra" no mysql ou no htaccess).
-Isso é possível de forma dinâmica (sem ferramentas externas, apenas código no braço mesmo em php)?
.
.
O que quero realmente é que ele não faça requisições no meu mysql o tempo todo (abrindo e fechando conexão a todo instante), porém fazer isso pelo htaccess pode ser impraticavel, pois eu teria que acrescentar manualmente isso no htaccess.
Para seu caso um captcha não resolveria? A ideia do captcha é exatamente evitar acesso por força bruta, tem uns muito eficientes, com aquele "Não sou um robô" e podendo abrir uma caixinha de verificação de imagens.
pensei no captcha, mas como faria para não ficar tendo que colocar ele a todo instante (tipo somente após 5 tentativas falhas do usuário)?
A forma mais correta de fazer isso seria salvar no banco as tentativas de acordo com o perfil em que se tentou acessar, a cada sucesso zera o número de tentativas, se o numero for maior do que você definiu, então apresenta o capcha.
Só para avisar veja esse API do google. Nele o usuário pode apenas clicar no botão, e caso o API suspeite de ser ROBÔ (geralmente pelo número de tentativas) aparece a possibilidade de selecionar imagens de acordo com o tipo.
Verifique se vale mesmo a pena fazer toda a parte de validação apneas para impedir que o CAPCHA aparece sempre.
Pelo .htaccess você consegue adicionar/remover o IP do usuário usando PHP, porém é um pouco complicado...
Eu recomendo salvar o IP do usuário em seu banco de dados mesmo, e fazer a checagem quando o mesmo acessar o site.