浅析node应用的timing-attack安全漏洞

2020-06-17 07:04:40易采站长站整理


// psdReceived 为用户输入密码;
// psdDb 为系统中存储的正确用户密码
const correctUser = (psdDb, psdReceived) => {
const state = [];
for (let i = 0; i < psdDb.length; ++i) {
if (!psdReceived[i]) {
state.push(false);
} else {
state.push(psdReceived.charCodeAt(i) ^ psdDb.charCodeAt(i));
}
}
return state.length !== 0 && state.every(item => !item);
}

三方包推荐

也可以使用 cryptiles 这个 npm 模块来解决这个问题


import cryptiles from 'cryptiles';

......
return cryptiles.fixedTimeCimparison(passwordFromDb, passwordReceived);