查询string参数被混洗

自2015年9月9日起,我们正在观察从javascript发送到我们系统的一些奇怪的行为。

当查询string发送到我们的服务器时,问题就出现了。 获取请求中包含参数的某些值是混洗的。由于参数完全变形,因此无法映射接收到的数据。

例如,参数'foo = bar'会得到'foo = abr'或'foo = rab'。 这意味着数据仍然可用,但字符不再是正确的顺序。 这只发生在长度超过8个字符的参数上。

我们根据查询string的jenkins散列来计算校验和。 由于string只有6个字符长,所以校验和得到正确传输。 GET请求在计算校验和后立即发送到我们的系统。 这就是为什么问题不应该在JavaScript中。

分析我们的服务器的访问日志显示,这些参数在收到时已经被打乱了。

现在,我们只能在Mozilla Firefox用户代理和Microsoft Windows操作系统上观察到这个问题。 来自昨天的错误请求示例显示了以下用户代理:

  • Mozilla / 5.0(Windows NT 10.0; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 10.0; WOW64; rv:38.0)Gecko / 20100101 Firefox / 38.0
  • Mozilla / 5.0(Windows NT 10.0; WOW64; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 5.1; rv:39.0)Gecko / 20100101 Firefox / 39.0
  • Mozilla / 5.0(Windows NT 5.1; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 6.0; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 6.0; WOW64; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 6.1; rv:39.0)Gecko / 20100101 Firefox / 39.0
  • Mozilla / 5.0(Windows NT 6.1; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:26.0)Gecko / 20100101 Firefox / 26.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:32.0)Gecko / 20100101 Firefox / 32.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:33.0)Gecko / 20100101 Firefox / 33.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:34.0)Gecko / 20100101 Firefox / 34.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:38.0)Gecko / 20100101 Firefox / 38.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:39.0)Gecko / 20100101 Firefox / 39.0
  • Mozilla / 5.0(Windows NT 6.1; WOW64; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 6.2; WOW64; rv:40.0)Gecko / 20100101 Firefox / 40.0
  • Mozilla / 5.0(Windows NT 6.3; WOW64; rv:38.0)Gecko / 20100101 Firefox / 38.0
  • Mozilla / 5.0(Windows NT 6.3; WOW64; rv:40.0)Gecko / 20100101 Firefox / 40.0

这些请求不太可能是任何forms的攻击,因为这些请求来自广泛的IP地址,并且请求总数的比例很低(低于0.1%)。 客户的行为似乎也是正常的。

有一个reddit文章( https://redd.it/3lxg26 )和一个post在stackoverflow( https://stackoverflow.com/questions/32572264/what-might-be-shufflling-my-query-string-parameters-在JavaScript中构造 )描述了一个类似的问题。

有没有人对这个问题有什么build议? 或者在应用程序上遇到类似的影响?