0

客户端创建包含以下信息的哈希

  • 请求网址
  • 请求方法

密钥用于从该信息创建散列。他将此哈希与他的公钥一起发送到服务器,该服务器从数据库中检索客户端的密钥。现在服务器创建自己的哈希,如果哈希匹配访问应用程序被授权。

但是,当我添加

  • 时间戳

到哈希。如何比较哈希服务器端?哈希值会有所不同,因为服务器会在几毫秒后创建哈希值。假设只有在 30 秒内发出请求时,我才想信任客户端。

有任何想法吗?

4

2 回答 2

4

将时间戳与哈希一起传递,以便您可以计算哈希并将时间戳的值与当前时间进行比较,以验证您指定的 30 秒窗口。

于 2013-10-12T19:39:02.200 回答
0

一种选择是,而不是为您的时间戳使用毫秒或秒精度,而是使用 30 秒精度,即 30 秒,每个时间戳将是相同的。

因此,在请求发送后的 30 秒内,最多可能有 2 个时间戳。您可以简单地在服务器上计算两者并检查哈希是否匹配。

这里的缺点是会有 30 秒的范围 - 您将接受一些 60 秒的旧请求并拒绝一些 31 秒的旧请求。但是,如果您对此感到满意......(您的时间戳也可以具有更高的精度,但代价是必须计算更多的哈希值)。

显然,必须为每个请求计算 2 个哈希值会对性能产生影响。

于 2013-10-12T19:57:31.567 回答