javascript / intermediate
Snippet
Verhinderung von Timing-Angriffen mit crypto
Beim Vergleich von Geheimnissen wie API-Keys kehren Standard-Gleichheitsoperatoren (===) sofort zurück, sobald eine Diskrepanz gefunden wird. Dies ermöglicht es Angreifern, die Zeit zu messen, um den Key zu erraten. timingSafeEqual stellt sicher, dass der Vergleich immer die gleiche Zeit in Anspruch nimmt.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
const crypto = require('crypto');function verifySecret(input, actual) {const inputBuffer = Buffer.from(input);const actualBuffer = Buffer.from(actual);if (inputBuffer.length !== actualBuffer.length) {return false;}return crypto.timingSafeEqual(inputBuffer, actualBuffer);}
nodejs
Erklärung
1
crypto.timingSafeEqual(inputBuffer, actualBuffer);
Führt einen zeitlich konstanten Vergleich zweier Buffer durch, um Side-Channel-Timing-Analysen zu verhindern.