我不知道为什么在第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/

10-13 09:02