hMAC 认证中的时间戳

Time stamp in hMAC authentication

作为 restful 网络 api 服务器,我们为我们的客户提供一个 clientid 和密码。我认为客户端使用 clientid + hMAC(clientid hashed by password) 进行身份验证就足够了。

我查看了一些建议使用时间戳或基本字符串的更多信息的文档。我就是不明白那是什么意思。

哪位大神能帮忙解释一下时间戳究竟有助于防止攻击还是其他什么?

问题是如果没有时间戳,任何签名的消息将永远有效。如果攻击者设法捕获了一条消息,他们就可以无限重播它,甚至不会泄露您用于签署消息的秘密。

如果您添加时间戳,则消息将在短时间后过期并防止这种情况发生。您可以选择在服务器应用程序中使用多长时间的时间戳。当你确实记得考虑 "future" 的时候,因为客户的点击可能会稍微领先于你,并在以后出现在你的应用程序中。