在JavaScript中构造的查询字符串参数可能会被什么搅乱?

在JavaScript中构造的查询字符串参数可能会被什么搅乱?,javascript,firefox,safari,query-string,browser-extension,Javascript,Firefox,Safari,Query String,Browser Extension,所以这可能是一个很长很长的机会,但我完全不明白是什么导致了这个问题: 我正在交付一个客户端JavaScript,它解析嵌入页面上的某些参数,使用这些参数构造URL,并使用该URL将iframe插入页面,如: var queryParams = { param: 'foo' , other: 'bar' }; 变成: <iframe src="http://example.net/iframes/123?param=foo&other=bar"></iframe

所以这可能是一个很长很长的机会,但我完全不明白是什么导致了这个问题:

我正在交付一个客户端JavaScript,它解析嵌入页面上的某些参数,使用这些参数构造URL,并使用该URL将iframe插入页面,如:

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

<iframe src="http://example.net/iframes/123?param=foo&other=bar"></iframe>
401事件是故意发生的,正如服务器所期望的那样
param=abc123

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

我用于将对象转换为查询字符串的库是:-但查看源代码,我看不到其中存在任何此类错误的可能性,对值所做的任何操作都是对键所做的(没有弄乱)

有人遇到过类似的事情吗?这是一个奇怪的浏览器扩展吗?这是我的脚本与另一个库扩展原型的冲突吗?这是恶意软件吗?这是我完全不知道的吗?我会感谢任何暗示,因为我真的很无知,这真的让我发疯


编辑:我刚刚发现,我们的另一项面向公众的服务目前正在被称为“打嗝套件”的sth调查。看看他们的网站,我发现他们有一个叫做“有效载荷模糊”的工具,它看起来和这里描述的差不多:或者这里:-整个工具闻起来有点可疑,所以我认为这可能是值得进一步研究的。还有人听说过这个工具集吗?

我觉得这种行为不太可能起源于您的或查询字符串代码。鉴于查询字符串值可以自由更改,我怀疑这就是正在发生的情况——请记住,这是您请求的0.2%

有几件事我要检查一下。您是否知道这些请求是来自其他网站、您自己的网站还是直接提出的?您知道是否有任何源IP对应于已知的机器人程序或网络爬虫程序吗?这些请求是来自各种来源还是重复访问者的一小部分


有可能是机器人或网络爬虫正在或正在测试重复页面或误导性参数。

从这一点上分析不多,因为您正在寻找提示;这更像是一个长篇大论,而不是一个答案

客户端浏览器(或计算机)或web服务器上的恶意软件;或者一个未知的爬虫可能会导致这种情况,这是不可能的。在我看来,您的应用程序似乎受到了攻击

让我们看看

  • 真实示例(在注释中)显示128位十六进制访问密钥正在被洗牌。(访问键的值
    accessKey
    param)
  • 只有值被洗牌,而不是键
  • 您可以说,请求来自特定用户
  • 你说,请求来自特定的浏览器客户端(Firefox和Safari)
检查/做什么

  • 检查日志系统是否正常工作。如果您使用的是第三方、可配置的记录器,这可能会把事情搞砸。()
  • 复制:采用相同的精确参数集;使用相同版本的浏览器,查看结果是否相同。如果是这样,那可能是浏览器版本问题,这是极不可能的
  • 检查是否有其他Firefox和Safari用户(具有相同版本)没有体验到这种体验
  • 既然您说这只是请求的一小部分,那个么请检查相应的请求是否一个接一个地发出。(在不到一秒钟的时间内提出相同的请求?)
  • 尝试跟踪请求的来源。他们来自你怀疑的来源吗?您能否将不同请求中的信息相互关联?多个IP形成一个子网?相同的IP使用不同的帐户?同一帐户在短时间内使用不同的IP
  • 有一些工具,例如,检查/分析大型日志文件以提取可能的攻击
  • 您还可以使用上面提到的一些技术来手动发现或阻止可疑请求

    • 有些机器人在你的网站上爬行,这很正常。如果您不想让他加载您的服务器,请阻止请求IP。

      正如我在这里已经提到的
      Firefox插件“Cliqz”有一个特定版本(至少1.0.37),内置了反跟踪功能。

      我是Tomas,我是Cliqz的软件工程师

      我们是一家德国初创公司,正在将搜索和创新隐私功能集成到浏览器中。这确实是我们的反跟踪功能的结果。同样的问题也被问到了。这两篇文章都已经给出了答案,所以我将在这里引用相同的答案:

      cliqz反跟踪一般不是为了阻止跟踪,而是只跟踪单个用户——我们认为这侵犯了用户的隐私,因此不合适。与其他反跟踪系统不同,我们的系统不会完全阻断信号;因此,网站所有者能够获得合法使用的数据,例如统计访问量

      为了防止识别用户(例如通过使用JavaScript散列),CLIQZ反跟踪实际上会置换字符串。 . 每当一个新的跟踪器出现在我们的数据中,我们的系统最初会将其视为一个用户识别跟踪器,并更改字符串以预防性地保护我们的用户。我们的系统使用所谓的k-匿名技术。如果它在一个事件中看到相同的字符串,并且多个用户在几天内独立出现,那么它将把它放在合法的、不可识别的跟踪者的白名单上。一旦跟踪程序被列入白名单,它将保持不变,网站所有者将看到原始字符串。换句话说
      <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"