什么可能会改变我在JavaScript中构建的查询字符串参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

所以这可能是一个漫长而长远的尝试,但我完全无法理解可能导致此问题的原因:

我提供了一个客户端JavaScript,它在它所嵌入的页面上解析某些参数,使用这些参数构建URL并使用该URL将iframe插入到页面中,如:

var queryParams = {
  param: 'foo'
  , other: 'bar'
};

变成:

<iframe src="http://example.net/iframes/123?param=foo&other=bar"></iframe>

这工作得很好,我每天发送约150万个请求。然而我最近注意到,在每天大约3.000个案例中,查询参数的值被混洗,所以这样得到要求:

<iframe src="http://example.net/iframes/123?param=ofo&other=rba"></iframe>

从日志中可以看出,这与特定用户有关,每次请求都会重新发生字符串混乱,因此当用户使用脚本在多个页面上浏览网站时,我可以看到类似这样的序列:

108.161.183.122 - - [14/Sep/2015:15:18:51 +0000] "GET /iframe/ogequl093iwsfr8n?param=3a1bc2 HTTP/1.0" 401 11601 "http://www.example.net/gallery?page=1" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
108.161.183.122 - - [14/Sep/2015:15:19:07 +0000] "GET /iframe/ogequl093iwsfr8n?param=a21b3c HTTP/1.0" 401 11601 "http://www.example.net/gallery?page=2" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
108.161.183.122 - - [14/Sep/2015:15:19:29 +0000] "GET /iframe/ogequl093iwsfr8n?param=ba132c HTTP/1.0" 401 11601 "http://www.example.net/gallery?page=3" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"

正如服务器期望的那样,401正在发生param=abc123

我还注意到,大多数错误都发生在Firefox和Safari中,Google Chrome已经请求了一个错误的URL。

我用来将对象转换为查询字符串的库是:query-string - 但是查看源代码我看不到任何潜在的问题,那里没有任何可能的值,对键进行操作(不会搞砸)。

有没有人遇到类似的东西?这是一个奇怪的浏览器扩展吗?这是我的脚本与另一个扩展原型的库的冲突吗?这是恶意软件吗?这是我完全不知道的东西吗?

提问于
用户回答回答于
用户回答回答于

从这一点来说,没什么可分析的,因为你在寻找提示; 这更像是一个长评,而不是一个答案。

客户端浏览器(或机器)上或您的网络服务器上的恶意软件; 或者一个未知的爬虫可能造成这种情况,这是不太可能的。对我来说,似乎你的应用程序正在受到攻击。

让我们来看看;

  • 真正的例子(在评论中)显示128位十六进制访问键正在混洗。(accessKeyparam的值)
  • 只有值被洗牌而不是键。
  • 你说,请求来自特定用户
  • 你说,请求来自特定的浏览器客户端(Firefox和Safari)。

什么检查/做什么;

  • 检查您的记录系统是否正常工作。如果您使用的是第三方,可配置的记录器,这可能会搞砸了。(例子
  • 重现:采用相同的确切参数集; 使用相同版本的浏览器并查看结果是否相同。如果是这样,它可能是一个浏览器版本的问题,这是不太可能的。
  • 检查是否有其他 Firefox和Safari 用户(具有相同版本)不会遇到此问题。
  • 既然你说这只是一小部分请求,请检查相应的请求是否一个接一个地进行。(同类请求不到一秒钟?)
  • 尝试追踪请求的来源。他们是否来自你怀疑的来源?你能把来自不同请求的信息联系起来吗?多个IP组成一个子网?同一个IP使用不同的帐户?同一个帐户在短时间内使用不同的IP?
  • 有诸如apache-scalpmod_seclorg等工具可以检查/分析大日志文件以提取可能的攻击。
  • 您也可以使用这里提到的一些技术手动发现或阻止可疑请求。

扫码关注云+社区