前些日子,奇舞周刊公众号推送了一篇文章,《Node.js 面试问题及答案(2017 版)》。其中有一个问题很有意思,请看下面这段代码,有什么问题吗?
function checkApiKey (apiKeyFromDb, apiKeyReceived) {
if (apiKeyFromDb === apiKeyReceived) {
return true
}
return false
}
可能很多人和我一样,一脸茫然。嗯哼?哪里错了?这不是挺好的嘛。
来看人家怎么说的,好像很有道理的样子:
嗯,这就是时序攻击(Timing Atack),旁路攻击(Side-channel attack)的一种。
恰巧今天刚刚看到一个 slide,讲的也是这方面的内容。看来性能优化有时候也有负面作用。
文中给出的几个链接,基本上已经能说明所有问题了。