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 :)