0

我有一个运行在例如 Google TV 或 Apple TV 上的应用程序,它将 HTTP 请求发送到我的服务。

现在,如果有人监听了这个请求,他们可以重播它并以这种方式执行拒绝服务 (DOS) 攻击我们的服务。

有没有办法让每个请求都独一无二,所以它不能被重放?

我想发送请求中加密的时间并检查服务器时间和发送请求的时间之间的差异,但我的时间差异太大而无法比较。

有没有人有更好的主意?

4

1 回答 1

1

您的情况很好,因为您可以同时控制服务器端和客户端(您的应用程序正在通话)。包含在您的信息中

  • 当前时间(以毫秒为单位)加上 + 随机数
  • 这些值产生的组合哈希加上(作为第三个输入)只有您的应用程序知道的一些键。使用一些好的单向散列算法。

只有知道上述密钥的代码才能计算出正确的哈希值。使用的请求记录(哈希和时间戳)可以存储一些可能很长的过期时间。非常旧的请求记录很容易过期,因为它们包含时间戳。

所提出方法的积极特征是它不需要预先连接以接收令牌,不需要身份验证,不需要注册并且可以使用开放协议。仅使用令牌本身对 DoS 没有多大帮助,因为攻击者会快速编写脚本来连接并提前获取令牌。

于 2013-01-30T09:37:45.980 回答