-
Notifications
You must be signed in to change notification settings - Fork 388
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A validação de email+senha deve tomar o mesmo tempo quando o usuário existe ou não #186
Comments
@coffee-is-power por que essa issue foi fechada? |
A feature ja foi implementada |
Onde exatamente? |
#171 |
@coffee-is-power não entendi. Onde no código (ou até naquela issue), demonstram que "A validação de usuário+senha deve tomar o mesmo tempo quando o usuário existe ou não" foi implementado? |
Edit: Como o login agora utiliza o Meus 10 centavos para esse assunto é que não existe justificativa para essa implementação enquanto houverem outras formas simples de obter os usuários válidos, como nesse endpoint: https://www.tabnews.com.br/api/v1/users E mesmo se eliminasse a rota acima, bastaria o atacante ir testando esse outro endpoint antes de tentar descobrir a senha: |
@aprendendofelipe alguns pontos importantes nessa questão:
|
Corretíssimo @filipedeschamps! Eu vi o Sobre retirar o endpoint Mas pensa só um pouco antes, pois pode ser útil manter o acesso somente para você (desde que adicione a feature Da maneira que ficou no #494, ninguém mais terá acesso, já que nenhum usuário tem essa feature. E também já está com os testes que vão impedir que a rota seja exposta novamente. |
Puts, é verdade! Sensacional!!!! Acabei de editar o draft da Milestone 5 com esse PR 🤝 🤝 🤝 |
@ThallesP show! Uma dúvida que tenho sobre esse ponto de evitar a conferência do email é que muita gente fala para fazer isso na hora do cadastro, mas ainda fica um furo que é na hora da atualização por email, pois esse é outro vetor. Qual a melhor UX nesse caso? Por exemplo:
|
@filipedeschamps
Problema que eu vejo com a primeira opção é caso um usuário mal intencionado tente fazer spam atualizando para e-mails aleatórios, talvez precise de um rate-limit para prevenir isso. |
Ainda não foi implementado. E são duas medidas contraditórias, pois o login é com email, então se for mostrar que o email já existe, não é necessária a implementação dessa issue. Mas veja que, por estas mensagens do @filipedeschamps, a intenção da issue é justamente esconder a informação se o email já estiver cadastrado:
Mas tem que ver se é possível fechar todos os furos, pois, se não for possível, talvez seja melhor agir no sentido de impedir a descoberta da senha por força bruta. Já existe o rate-limit, mas como é por IP, não pode ser muito restrito, então deveria haver um limite por usuário. |
@aprendendofelipe obrigado pelas explicações:
Desta forma, realmente não faz sentido quebrar a cabeça com o time de login para verificar se o e-mail existe. Estou nessa Issue porque é a mais antiga aberta do projeto, e vou fazer uma "limpeza" da mais antiga para frente. 👍️ - Finalizar essa Issue. |
Fala pessoal, tudo beleza? Confesso que não entendi o porque dessa issue ainda não ter sido fechada, testei para mail enumeration na rota Porém, a historia é diferente para a rota Testei esse comportamento localmente e o validei no próprio site oficial do tabnews (onde a diferença chega a casa 2000ms). Nos meus testes de possíveis soluções ainda encontrei uma outra enumeração (um pouco mais especifica) na mesma rota, relacionada a com o tratamento de erro quando um usuário tenta se cadastrar com um usuário já existente e um email também já existente (resultado de uma possivel enumeração). O erro de "usuário já existe" é disparado somente se o primeiro match encontrado na base de dados para userData for um usuário igual, se for um email, ele não dispara o erro e mostra a mensagem que o email foi enviado. Permitindo enumerar todos os emails de usuários que estão acima dele na base de dados. (já possuo uma correção satisfatória para esse comportamento) No intuito de igualar esses tempos de resposta devo atacar essa issue e tentar corrigir essas enumerações. Não sei se deveria abrir uma outra issue específica dessa rota mas por enquanto vou utilizar esta. |
@luanmz, você foi citado na publicação sobre as novidades do TabNews 🎉💪 https://www.tabnews.com.br/FelipeBarso/tabnews-melhorias-de-seguranca-nos-testes-e-mais |
De forma a deixar a rota
/api/v1/sessions
uma black box (ou seja, não ser possível saber se um usuário existe ou não através do tempo de resposta do servidor), precisamos fazer algumas alterações.Sugestão de fluxo de validação de login, em pseudo-código
Vantagens:
The text was updated successfully, but these errors were encountered: