我不知道为什么在第42行使用sha1
在https://github.com/tj/node-cookie-signature/blob/master/index.js中
在index.js的第42行,您可以看到
return sha1(mac) == sha1(val) ? str : false;
我尝试将其更改为
return mac == val ? str : false;
而且似乎符号和取消符号功能仍然可以正常工作。
在这里使用sha1的原因是什么?这是一种安全问题吗?这里需要sha1吗?
最佳答案
它可以帮助防止定时攻击。字符串比较将在第一个不同的字符上返回false。因此,比较时间越长,字符串开头的字符越多。攻击者可能试图猜测第一个字符,然后猜测下一个字符,依此类推。
当然,这样的攻击并不容易。但是,如果延迟足够低并且可以以较高的速率进行足够的尝试,则可能是一个问题。
通过散列,比较有效地变为恒定时间。
关于node.js - 在github上的cookie签名中需要sha1吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29313124/