使HTTP请求不可重播

时间:2012-12-28 10:36:31

标签: security http denial-of-service

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

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

有没有办法让每个请求都是唯一的,所以无法重播?

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

有没有人有更好的主意?

1 个答案:

答案 0 :(得分:1)

您处于良好状态,因为您可以控制服务器端和客户端(您的应用程序正在讨论)。包含在您的消息中

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

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

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