客户端创建包含以下信息的哈希
- 请求网址
- 请求方法
密钥用于从该信息创建散列。他将此哈希与他的公钥一起发送到服务器,该服务器从数据库中检索客户端的密钥。现在服务器创建自己的哈希,如果哈希匹配访问应用程序被授权。
但是,当我添加
- 时间戳
到哈希。如何比较哈希服务器端?哈希值会有所不同,因为服务器会在几毫秒后创建哈希值。假设只有在 30 秒内发出请求时,我才想信任客户端。
有任何想法吗?
将时间戳与哈希一起传递,以便您可以计算哈希并将时间戳的值与当前时间进行比较,以验证您指定的 30 秒窗口。
一种选择是,而不是为您的时间戳使用毫秒或秒精度,而是使用 30 秒精度,即 30 秒,每个时间戳将是相同的。
因此,在请求发送后的 30 秒内,最多可能有 2 个时间戳。您可以简单地在服务器上计算两者并检查哈希是否匹配。
这里的缺点是会有 30 秒的范围 - 您将接受一些 60 秒的旧请求并拒绝一些 31 秒的旧请求。但是,如果您对此感到满意......(您的时间戳也可以具有更高的精度,但代价是必须计算更多的哈希值)。
显然,必须为每个请求计算 2 个哈希值会对性能产生影响。