Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

De que ataque o timingSafeEqual protege?

Eu vi que no curso foi utilizado este método para comparar as hashes e dando uma pesquisada vi que ele protege a um certo tipo de ataque, alguém saberia dizer como funciona isso? Que tipo de ataque ele protege e como usando esse método a gente consegue evitá-lo?

1 resposta
solução!

Boa tarde Ulysses,

O método timingSafeEqual protege contra ataques de bruteforce que se aproveitem dos métodos de variações de timing do tempo de processamento necessário para executar comparações.

O princípio é o seguinte: Para comparar duas strings com o operador triple equal (===), cada letra das duas strings é comparada, e se for igual, a próxima é comparada, e assim por diante. O tempo para comparação de dois caracteres é consistente, entretanto, caso os caracteres sejam diferentes, o tempo será inconstente e irá variar. Monitorando o tempo necessário para executar essa operação, é possível testar cada posição da string com caracteres diferentes, e descobrir quais estão certos e quais estão errados, até descobrir qual a string-alvo.

Utilizando o método timingSafeEqual, todas as comparações utilizarão a mesma quantidade de tempo, estando certas ou erradas, e dessa forma, o tempo necessário é globalmente consistente, e o ataque de previsão por timing se torna impossível.

Este artigo explica bem sobre o assunto: https://javascript.plainenglish.io/what-are-timing-attacks-and-how-to-prevent-them-using-nodejs-158cc7e2d70c

Se a resposta solucionou sua dúvida, por gentileza marque o tópico como 'solucionado'. Obrigado, e boa sorte :)